Création Des Tables de La Base de Données
Création Des Tables de La Base de Données
UCA/ESTS
Tp1 en SGBD (SQL3 sous POSTGRESQL)
Vues, types SQL3
---------------------------------------Création des tables de la base de données---------------------
DROP TABLE Client CASCADE;
DROP TABLE Commande CASCADE;
DROP TABLE Produit CASCADE ;
DROP TABLE Detail;
CREATE TABLE Client (
NCli VARCHAR PRIMARY KEY,
Nom VARCHAR,
Adresse VARCHAR,
Localité VARCHAR,
Cat VARCHAR,
Compte REAL
);
--Table commande
DELETE FROM Commande;
INSERT INTO Commande VALUES(30178,'K111','2017-12-21'),(30179,'C400','2017-12-
22'),
(30182,'S127','2017-12-23'),(30184,'C400','2017-12-23'),(30185,'F011','2018-01-02'),
(30186,'C400','2018-01-02'),(30188,'B512','2018-01-03');
--Table produit
DELETE FROM Produit;
INSERT INTO Produit VALUES('BP156','Bur.PC 150*60',1500,145), ('BP26','Bur.PC
200*60',1600,2690),
('BC15156','Bur.Coin 150*150*60',2500,1450),('CF','Chais.Faut',1500,580),
('CFG','Chais.Faut.Glis',3500,334),('C435','Class 40*35',150,782),
('C454','Class 45*40',180,1220);
--Table detail
DELETE FROM Detail;
INSERT INTO Detail VALUES(30178,'BC15156',25),(30179,'BP156',60),
(30179,'CFG',20),(30182,'CFG',30),(30184,'BC15156',120),
(30184,'CF',20),(30185,'BC15156',260),(30185,'CFG',15),
(30185,'C435',600),(30186,'CF',3),(30188,'BC15156',180),
(30188,'CF',22),(30188,'CFG',70),(30188,'C435',92);
-----------------------------------------------------------------------------
************************Principes et objectifs des vues**************************
-- Une vue = une table virtuelle (seule sa définition est stockée sous forme d'une requête et
non son contenu)
-- On peut utiliser une vue comme interface pour des besoins particuliers afin d'éviter
-- la complexité d'une base de données dont seules quelques données nous sont utiles
---Une contrainte d'intégrité peut être associée à une vue modifiable grâce à la clause
-- additionnelle WITH CHECK OPTION
DROP VIEW Cli;
CREATE VIEW Cli(NCli,Nom,Adresse,Localité,Cat,Compte) AS
SELECT NCli,Nom,Adresse,Localité,Cat,Compte
FROM Client
WHERE Cat is NULL OR Cat in ('B1','B2','C1','C2')
WITH CHECK OPTION;
--La requête suivante sera exécutée
INSERT INTO Client VALUES ('B313','Damou','place My Youssef','Casablanca','D7',0);
SELECT * FROM Client WHERE NCli = 'B313';
SELECT * FROM Cli;
*********************Extensions Objet de SQL3**********************
--Types de données complexes
--Constructeur ROW: pour déclare un type composite sous Postgresql, il faut créer un type et
-- utiliser ROW au moment de l'insertion des données
Reponse de la question :