Université de Bouira - Facultés des sciences et des sciences appliquées - Département de génie électrique
Module BDD - LDD (Langage de Manipulation des Données
La définition de données dans SQL permet la définition des objets manipulés par le SGBD. Les objets : Table, Vue, Index
Les commandes du LDD sont :
CREATE : Création des objets.
ALTER : Modification de la structure des objets.
DROP : Suppression des objets.
1. Création des tables :
Elle se fait avec la commande : CREATE TABLE
CREATE TABLE nom_table
(
col_1 type [(taille)] [DEFAULT ValeurParDefaut] [NULL/NOT NULL] [contrainte de colonne] ,
col_2 type [(taille)] [DEFAULT ValeurParDefaut] [NULL/NOT NULL] [contrainte de colonne],
…
col_n type [(taille)] [DEFAULT ValeurParDefaut] [NULL/NOT NULL] [contrainte de colonne]
[contrainte de tables]
);
NB. Les partie mise entre crochets [ ] sont optionnelle (facultatives
Avec :
Types : indique le type de données de la l’attribut (colonne)
Taille : indique la valeur maximale de la longueur de l’attribut
Principaux types de données SQL Exemple
CHAR(n) : Chaine de longueur fixe égale à n caractères. Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, qte_seuil, Prix)
INTEGER : Entier. Avec :
VARCHAR(n) : Chaine de longueur maximale n. Numprod : de type numérique de taille 6,
DECIMAL(m,n) : Numérique sur m chiffres avec n décimales. Desprod : de type caractère variable de taille 15,
DATE : Date avec le jour, le mois, l'année. Couleur : de type caractère sur une position,
TIME : Horaire avec heures, minutes, secondes. Poids : numérique sur huit positions dont trois chiffre après la virgule,
DATETIME : Date et horaire réunis (non ANSI) Qte_stk : numérique sur sept positions dont trois chiffres après la virgule,
TEXT : Texte de longueur quelconque (non ANSI) Qte_seuil : umérique sur sept positions dont trois chiffres après la virgule,
Prix : numérique sur dix positions dont sept chiffres avant la virgule.
CREATE TABLE Produit
(
Numprod integer NOT NULL ,
Desprod varchar (15),
Couleur char,
Poids numeric (8,3),
Qte_stk numeric (7,3),
Qte_seuil numeric (7,3),
Prix numeric (10,3)
);
2. Définition des contraintes d’intégrité :
a) Contrainte de clé primaire : Primary key
Elle peut être définie comme contrainte de table ou comme contrainte de colonne.
Clé primaire comme contrainte de table selon la syntaxe : Clé primaire comme contrainte de colonne :
CREATE TABLE Produit CREATE TABLE Produit
( Numprod integer NOT NULL, ( numprod integer Primary Key,
Desprod varchar(15), Desprod varchar(15),
Couleur char, couleur char,
Poids numeric (8,3), Poids numeric (8,3),
Qte_stk numeric (7,3), Qte_stk numeric (7,3),
Qte_seuil numeric (7,3), Qte_seuil numeric (7,3),
Prix numeric (10,3), prix numeric (10,3)
CONSTRAINT PK_Produit Primary Key (NumProd) );
);
Remarque
Dans le cas de clé primaire multiple, la clé primaire doit être créée comme contrainte de table.
b) Contrainte : UNIQUE et NOT NULL
CREATE TABLE Produit
(
Numprod integer Primary Key,
Desprod varchar (15) UNIQUE , // l’attribut desprod doit etre yunique pour chaque produit
Couleur char NOT NULL, // l’attribut couleur doit avoir obligatoirement une valeur
…..
);
Kamal BAL Avril 2016 1
Université de Bouira - Facultés des sciences et des sciences appliquées - Département de génie électrique
Module BDD - LDD (Langage de Manipulation des Données
c) Contrainte de valeur avec la clause CHECK
Exemple : On suppose que le poids d’un produit doit être positif. La commande de création de la table Produit devient :
CREATE TABLE Produit Comme contrainte sur la colonne
( Numprod integer primary key, CREATE TABLE Produit
Desprod varchar(15), ( Numprod integer primary key,
Couleur char, Desprod varchar(15),
Poids numeric (8,3), Couleur char,
Qte_stk numeric (7,3), Poids numeric (8,3) CHECK (Poids >=0),
Qte_seuil numeric (7,3), Qte_stk numeric (7,3),
Prix numeric (10,3), Qte_seuil numeric (7,3),
CONSTRAINT Ck1_Produit CHECK (Poids >=0) Prix numeric (10,3) );
);
d) Contrainte de clé étrangère : Foreign Key
Soit le schéma suivant : MAGASIN(NumMag, Adresse, Surface) , PRODUIT(NumProd, DesProd, Couleur, Poids, Qte_Stk, CodMag)
La commande pour la création de la table Magasin étant :
CREATE TABLE Magasin
(NumMag numeric(6) primary Key,
Adresse varchar(30),
Surface numeric(7,3)
);
La commande pour la création de la table Produit peut être écrite de deux façons:
CREATE TABLE Produit CREATE TABLE Produit
(Numprod integer primary key, (Numprod numeric(6) primary key,
Desprod varchar(15), Desprod varchar(15),
Couleur char, Couleur char,
Poids numeric ( 8,3), Poids numeric(8,3),
Qte_stk numeric (7,3), Qte_stk numeric(7,3),
Qte_seuil numeric (7,3), Qte_seuil numeric(7,3),
Prix numeric (10,3), Prix numeric(10,3),
CodMag numeric (6), CodMag numeric(6) REFERENCES Magasin(NumMag)
CONSTRAINT FK_Produit FOREIGN KEY (CodMag) );
REFERENCES Magasin (NumMag)
);
3. Modification de la structure d’une table : Elle se fait avec la commande ALTER TABLE
Plusieurs possibilités de modification de la structure de table
a) 1ère forme : Ajout de nouvelles colonnes à une table ALTER TABLE Magasin
ADD CONSTRAINT ck1_magasin Check (surface between 10 and 100) ;
ALTER TABLE nom_table
ADD (col1 type [(taille)] [null / not null] ; e) 5eme forme : Suppression d'une contrainte:
Exemple : ajouter une colonne type_clt
ALTER TABLE CLIENT On peut effacer une clé primaire. La commande est :
ADD type_clt char(3) ; ALTER TABLE nom_table DROP PRIMARY KEY
[CASCADE] ;
b) 2emee forme : modification des colonnes d’une table Remarque : L'option cascade est ajoutée pour pouvoir supprimer
une clé primaire référencée.
ALTER TABLE nom_table
ALTER TABLE magasin DROP PRIMARY KEY;
MODIFY (col1 type [(taille)] [null / not null];
Remarque : Pour modifier le nom d'une colonne : Suppression d'une contrainte autre que la clé primaire :
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte ;
RENAME COLUMN nom_table.ancien_nom TO
nom_table.nouveau_nom ; Où Le nom de la contrainte c'est celui de la contrainte à supprimer
Exemple : Changer le type_clt de char(3) en char(5) : .
ALTER TABLE CLIENT Exemple :
MODIFY type_clt char(5) ; ALTER TABLE produit DROP CONSTRAINT Ck4_Produit ;
On peut supprimer un e contrainte de clé étrangère . La
c) 3ème forme : Suppression de colonnes existantes commande (sous MySQL ) est :
ALTER TABLE nom_table ALTER TABLE nom_table DROP FOREIGN KEY
DROP COLUMN ( col1 , col2 ,…, coln ) ; nom_contrainte ;
Exemple : supprimer le champ ville de la table Magasin : 4. Suppression d’une table
ALTER TABLE Magasin
DROP COLUMN ville ; Elle se fait avec la commande : DROP TABLE
Exemple :
d) 4eme forme: ajout d’une contrainte
DROP TABLE client ;
ALTER TABLE nom_table Pour changer le nom d'une table existante la commande est :
ADD Constraint Def_de_contrainte ; RENAME TABLE ancien_nom TO nouveau_nom
Exemple : Ajouter à la table « Magasin » la contrainte suivante : la
surface doit être comprise entre 10 et 100 m2
Kamal BAL Avril 2016 2