Académique Documents
Professionnel Documents
Culture Documents
Laporte
SQL : LDD-LMD
LMS
nom_colonne_n type_colonne_n
)
Number (p)
Number(p,d)
Date
Long
S. Laporte
SQL : LDD-LMD
LMS
1.1.3 Exemple :
CREATE TABLE employe
(
empno number(8) not null,
nom varchar2(20),
fonction varchar2(10),
sal number(8,2),
code_service char(3),
date_embauche date
) ;
);
et les contraintes (cl primaire, cl trangre, ) voir le paragraphe 3 (approfondissements)
S. Laporte
SQL : LDD-LMD
LMS
Deuxime forme : en n'indiquant pas les noms de colonnes. Mais alo rs il faut absolument
respecter l'ordre dans lequel elles ont t cres et les valoriser toutes (ou crire
explicitement NULL)
INSERT INTO nom_table VALUES(valeur_colonne_1, valeur_colonne_2, )
3
S. Laporte
SQL : LDD-LMD
LMS
Exemple :
INSERT INTO employe VALUES(12, 'Dupont', 'comptable', 1800, 2, NULL)
S. Laporte
SQL : LDD-LMD
LMS
Exercice d'application :
Reprendre le cas compte bancaire
1. Crer les tables en rflchissant au type le mieux appropri pour chaque colonne
2. Ajouter une colonne solde la table compte
3. Affecter la valeur 0 tous les soldes de tous les comptes existants
4. Modifier la colonne solde de la table compte pour qu'elle prenne la valeur 0 par dfaut
5. Ajouter un nouveau compte 698 ouvert le 21/01/04 du client numro 51 et de type 2
6. M. Christophe Fournier a enfin fournit son adresse : c'est le 3, avenue des peupliers
Cachan
7. La cliente numro 53 s'est marie : son nouveau nom est DUDUCHE
8. Ajouter un client 351, nomm Cdric Martin, domicili 5 rue du Maine Anthony, gr
par Pignon
9. Le client nomm Robert Laroche est dcd. Il faut le supprimer de la base, ainsi que tous
les enregistrements qui lui son lis dans les autres tables.
10. Supprimer de la table compte la date d'ouverture
11. Ajouter le prnom du gestionnaire
S. Laporte
SQL : LDD-LMD
LMS
Une contrainte d'intgrit est une rgle qui permet d'assurer la validit (cohrence) des donnes stockes
dans une base.
Le SGBD contrle les contrain tes d'intgrit chaque modification dans les tables (saisies, modification
ou suppression).
Les diffrentes contraintes que l'on peut dfinir sont :
non nullit (obligation) : NOT NULL
La colonne ne peut pas contenir de valeurs NULL.
unicit : UNIQUE
Toutes les valeurs de la (des) colonnes doivent tre diffrentes ou NULL
cl primaire : PRIMARY KEY
Chaque ligne de la table doit avoir une valeur diffrente pour la ou les colonnes qui font partie de
la cl primaire. Les valeurs NULL sont rejetes.
primary key = unique + not null
valeur par dfaut : DEFAULT
Permet de spcifier une valeur par dfaut la colonne (dans le cas o aucune valeur n'est
explicitement donne)
intgrit de domaine : CHECK
Permet de spcifier les valeurs acceptables pour une colonne.
intgrit rfrentielle (cl trangre) : FOREIGN KEY
Cette colonne fait rfrence une colonne cl d'une autre table.
Nous allons voir comment une contrainte d'intgrit peut se dfinir au moment de la cration d'une table
(nous verrons plus tard d'autres techniques).
Les contraintes peuvent soit concerner uniquement une seule colonne, soit concerner une table toute
entire. Dans les deux cas, la syntaxe d'expression est un peu diffrente.
Les contraintes de colonne s'crivent tout simplement aprs la colonne laquelle elles se rapportent.
Attention, on ne met pas de virgule entre la dfinition de la colonne et celle de la contrainte.
autoris
refus
refus
S. Laporte
SQL : LDD-LMD
LMS
S. Laporte
SQL : LDD-LMD
LMS
S. Laporte
SQL : LDD-LMD
LMS
S. Laporte
SQL : LDD-LMD
LMS
S. Laporte
SQL : LDD-LMD
LMS
Exemple :
CHAMBRE(id_hotel, num_ch, tarif)
RESERVATION(id_resa , #id_hotel, #num_ch, date)
CREATE TABLE RESERVATION
(id_resa Number PRIMARY KEY,
id_hotel Number,
num_ch Number,
date Date NOT NULL,
FOREIGN KEY (id_hotel, num_ch) REFERENCES CHAMBRE (id_hotel, num_ch)
);
Exemple de relation o la cl primaire est compose de plusieurs cls trangres
CREATE TABLE LIGNE_COMMANDE
(id_commande Number REFERENCES COMMANDE(id_commande),
ref_produit Varchar2(10) REFERENCES PRODUIT(ref_prod),
quantit Number DEFAULT 1,
PRIMARY KEY (id_commande, ref_produit)
);
Remarque : dans la table produit, la rfrence est code par ref_prod et dans la table COMMANDE, c'est
ref_produit