Vous êtes sur la page 1sur 6

Cours SGBD Chapitre I

Chapitre III

Langage de Définition de Données (LDD)

Le LDD permet la définition du schéma d'une base de données ainsi que certaines de ses
contraintes d'intégrité. Il comporte également les opérations de mise à jour de schéma telles
que la suppression d'une table ou la modification de la définition d'une table.
Le LDD est donc composé de 3 primitives :
- CREATE pour la création d'un objet (table, index, vue, etc.),
- ALTER pour la modification d'un objet,
- DROP pour la suppression d'un objet.
Dans la suite, nous supposons qu’une base données est déjà créée. Cette création se fait en
utilisant l’instruction :
CREATE DATABASE nomBD ;
La suppression d’une base de données se fait avec l’instruction :
DROP DATABASE nomBD ;
1. Création simple d’une table
La commande qui permet la création d’une table est CREATE TABLE
Chaque table est définie par :
- son nom
- sa liste d'attributs
- sa liste de contraintes sur table
Chaque champ est défini par :
- son type
- sa valeur par défaut
- sa liste des contraintes sur attribut
A sa création la table est vide, mais un certain espace lui sera alloué. La syntaxe de la création
d’une table est la suivante :
CREATE TABLE nomTable
(colonne1 type1,
colonne2 type2,
.
.
.
colonnen typen);
Remarques :
 Le nom de table doit être unique dans l’environnement de travail et ne doit pas être un
mot clé de SQL.
 Les noms de tables sont notés en minuscules (excepté la première lettre, ces noms
seront quand même stockés dans le système en minuscules).
 Une table doit contenir au minimum une colonne, par contre le nombre maximum de
colonnes dépend de la version du logiciel.
 Tous les mots-clés de SQL sont notés en majuscules,
 Les noms de colonnes et de contraintes sont notés minuscules.

1
Cours SGBD Chapitre I

Définition de colonnes
La définition élémentaire d’une colonne consiste à lui attribuer un nom et un type. Le nom
d’une colonne obéit aux contraintes du nom d’une table, citées précédemment.
Les types de données les plus utilisés sont :

CHAR(n) Chaîne de caractères de taille fixe n. La zone est complétée par des
blancs. ( maximum de 2000 octets ou caractères)
VARCHAR (n) Chaine de caractères ayant une longueur variable avec un maximum de
n caractères.
INTEGER[(n)] Entier signé de 32 bits (-2E31 à 2E31-1)
INT est synonyme de INTEGER.
FLOAT[(n[,p])] Flottant (de 4 à 8 octets), p désigne la précision simple.
DOUBLE[(n[,p])] Flottant (sur 8 octets), p désigne la précision double.
NUMERIC[(n[,p])] Nombres décimaux à nombre fixe de décimales
DECIMAL[(n[,p])] Décimal à virgule fixe, p désigne la précision (nombre de chiffres
après la virgule, maximum 30). Par défaut n vaut 10, p vaut 0.
BOOL et la valeur zéro est considérée comme fausse. Le non-zéro est considéré
BOOLEAN comme vrai.
DATE Dates du 1er janvier au 31 décembre. Sur 3 octets. L’affichage est au
format ‘YYYY-MM-DD’.
TIME L’heure au format ‘HHH:MM:SS’ sur 3 octets.
Exemple 1 :
Soit la table Compagnie ayant la structure suivante :
Compagnie (numComp, nomComp, rue, ville, CP)
L’instruction SQL qui permet de créer la table Compagnie est la suivante :
CREATE TABLE Compagnie
(numComp CHAR(4),
nomComp CHAR(15)
rue CHAR(20),
ville CHAR(15)
CP INT);
2. Création d’une table avec contrainte
Une contrainte d’intégrité est une règle qui permet de contrôler la validité et la cohérence des
valeurs entrées dans les différentes tables de la base. Elle peut être définie sous deux formes :
 dans les commandes de création des tables.
 au moment de la modification de la structure de la table.
Les contraintes peuvent être déclarées de deux manières :
 en même temps que la colonne (champ); ces contraintes sont dites « en ligne ».
 après que la colonne est déclarée, ces contraintes ne sont pas limitées à une colonne et
peuvent être personnalisées par un nom (attribuer un nom à une contrainte ) grâce au
mot clé CONSTRAINT.
a. Exemple de contraintes en ligne :
 [NOT] NULL|
 UNIQUE|
 PRIMARY KEY|
 Foreign key nomCléEtrangère REFERENCES nom_table (nom_colonne)|
 CHECK (condition)|

2
Cours SGBD Chapitre I

 DEFAULT
b. Exemple de contraintes types de contraintes nommées :
 CONSTRAINT nomContrainte
 UNIQUE (colonne1 [,colonne2]...)
 PRIMARY KEY (colonne1 [,colonne2]...)
 FOREIGN KEY (colonne1 [,colonne2]...) REFERENCES nomTablePere
[(colonne1 [,colonne2]...)]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO
ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO
ACTION}]
 CHECK (condition)
 La contrainte NOT NULL : Spécifie que pour toute occurrence, l’attribut doit avoir
une valeur (la saisie de ce champ est obligatoire).
 La contrainte UNIQUE : impose une valeur distincte au niveau de la table.
 La contrainte PRIMARY KEY : déclare la clé primaire de la table. Les colonnes clés
primaires ne peuvent être ni nulles ni identiques
 La contrainte FOREIGN KEY : déclare une clé étrangère entre une table enfant et
une table père. Ces contraintes définissent l’intégrité référentielle.
 La contrainte CHECK : impose un domaine de valeurs à une colonne ou une
condition (exemples : CHECK (note BETWEEN 0 AND 20)).
 La contrainte Default : fixe une valeur par défaut.
Remarques :
 La contrainte PRIMARY KEY est équivaut à : UNIQUE + NOT NULL + index.
 L’ordre n’est pas important dans la déclaration des contraintes nommées.
 L’ordre de création des tables est important quand on définit les contraintes en même
temps que les tables. Il faut créer d’abord les tables « pères » puis les tables « fils ».
Le script de destruction des tables suit le raisonnement inverse.
 Il est recommandé de déclarer les contraintes NOT NULL en ligne, les autres peuvent
soit être déclarées en ligne, soit être nommées.
Exemple 1 :
Soient les deux tables suivantes :
Pilote (brevet, nomPil, nbhvol, #numComp)
Compagnie (numComp, nomComp, rue, ville, CP)
Les instructions SQL qui permettent la création des deux tables sont les suivantes :
CREATE TABLE Compagnie
(numComp CHAR(4),
nomComp CHAR(15) NOT NULL,
rue CHAR(20),
ville CHAR(15) DEFAULT ‘Tunis’
CP INT,
CONSTRAINT pk_Compagnie PRIMARY KEY(comp));
CREATE TABLE Pilote
(brevet CHAR(6),
nomPil CHAR(15) NOT NULL,
nbhvol DECIMAL(7,2),
numComp CHAR(4),

3
Cours SGBD Chapitre I

CONSTRAINT pk_Pilote PRIMARY KEY(brevet),


CONSTRAINT fk_Pil_compa_Comp FOREIGN KEY (numComp) REFERENCES
Compagnie (numComp)
CONSTRAINT ck_nbhvol CHECK(nbHVol BETWEEN 0 AND 20000));
Remarques :
Généralement on adopte les conventions d’écriture suivantes pour les contraintes :
Préfixez par pk_ le nom d’une contrainte clé primaire, par fk_ une clé étrangère, par ck_ une
vérification et un_ une unicité.
3. Modification de la structure d’une table
L’évolution d’un schéma est un aspect très important à prendre en compte, car il répond aux
besoins de maintenance des applicatifs qui utilisent la base de données. Par exemple une
nouvelle codification du numéro de téléphone peut imposer l’extension de cette zone de 6
chiffres à 8 chiffres etc.
Les modifications sont appliquées à une table existante en utilisant la commande ALTER
TABLE de SQL.
Considérons la table suivante que nous allons faire évoluer :
CREATE TABLE Pilote (brevet varchar(4),
nom varchar(20)) ;
1- Pour ajouter des colonnes dans une table on utilise l’instruction ADD :
ALTER TABLE nom_table ADD (nom-colonne type_colonne) ;
Remarque :
 Cette colonne est initialisée à NULL pour tous les enregistrements.
 Il est possible d’ajouter une colonne en ligne NOT NULL seulement si la table est vide
ou si une contrainte DEFAULT est définie sur la nouvelle colonne.
Exemple 2 :
Ajouter une colonne nommée nbHVol de type décimal à la table Pilote :
ALTER TABLE Pilote ADD (nbHVol decimal);
ALTER TABLE Pilote ADD (numComp ville VARCHAR(30) DEFAULT ‘Tunis’ NOT
NULL);
2- Pour renommer une colonne existante on utilise l’instruction RENAME :
ALTER TABLE nom_table RENAME COLUMN ancien_nom_col TO nouveau_nom_col ;
Exemple 3:
Renommer la colonne ville par adresse :
ALTER TABLE Pilote RENAME COLUMN ville TO adresse ;
3- Pour supprimer une colonne on utilise l’instruction DROP :
ALTER TABLE nom_table DROP COLUMN nom-colonne ;
Exemple 4 :
Supprimer la colonne Adresse de la table Pilote :
ALTER TABLE Pilote DROP COLUMN Adresse ;
Remarque :
Il n’est pas possible de supprimer avec cette instruction :
 des clés primaires (ou candidates par UNIQUE) référencées par des clés étrangères,
 toutes les colonnes d’une table.
4- Pour changer la taille d’une colonne ou bien sa valeur par défaut, on utilise l’instruction
MODIFY :
ALTER TABLE nom_table MODIFY (nom_colonne type, …) ;

4
Cours SGBD Chapitre I

Exemple 5 :
Augmente la taille de la colonne nom.
ALTER TABLE Pilote MODIFY nom VARCHAR(25);
4- Pour ajouter une contrainte on utilise l’instruction ADD CONSTRAINT :
ALTER TABLE nom_table ADD CONSTRAINT nom_contraint contrainte ;
Remarque :
Quatre types de contraintes sont possibles à ajouter :
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY
 CHECK
Exemple 6:
Ajoutons à la table Pilote, en une seule instruction, sa clé primaire et la clé étrangère (vers la
table Compagnie).
ALTER TABLE Pilote ADD ( CONSTRAINT pk_Pilote PRIMARY KEY (brevet),
CONSTRAINT fk_Pil_Comp FOREIGN KEY(numComp) REFERENCES Compagnie
(numComp)) ;
Ajouter une colonne et sa contrainte au même temps :
ALTER TABLE Pilote ADD (genre CHAR(1) CONSTRAINT
CK_CommGenre CHECK (genre IN (‘P’,’M’)) ;
5- a-Pour supprimer une contrainte on utilise l’instruction DROP :
ALTER TABLE nom_table DROP CONSTRAINT nom_contraint;
b- L’option DROP FOREIGN KEY de l’instruction ALTER TABLE permet de
supprimer une clé étrangère d’une table. La syntaxe générale est la suivante :
ALTER TABLE nomTable DROP FOREIGN KEY nomContrainte;
c- L’option DROP PRIMARY KEY de l’instruction ALTER TABLE permet de
supprimer une clé primaire.
Exemple 7:
Supprimer la clé étrangère de la colonne numComp
ALTER TABLE Pilote DROP FOREIGN KEY fk_Pil_Comp;
Remarque :
Si la colonne clé primaire à supprimer contient des clés étrangères, il faut d’abord retirer les
contraintes de clé étrangère. Si la clé primaire à supprimer est référencée par des clés
étrangères dans d’autres tables, il faut d’abord ôter les contraintes de clé étrangère de ces
autres tables.
7- Pour désactiver temporairement l’exécution d’une contrainte et ce jusqu’à sa réactivation
on utilise l’instruction DISABLE.
8- Pour activer une contrainte on utilise l’instruction ENABLE.
4. Renommer une table
L’instruction RENAME renomme une ou plusieurs tables. Cette commande convient aussi
aux séquences, synonymes et vues. Il faut être propriétaire de l’objet que l’on renomme.
RENAME ancienNom TO nouveauNom;
Les contraintes d’intégrité, index et prérogatives associés à l’ancienne table sont
automatiquement transférés sur la nouvelle.
Il est aussi possible d’utiliser l’option RENAME TO de l’instruction ALTER TABLE pour
renommer une table existante.

5
Cours SGBD Chapitre I

L’exemple suivant décrit comment renommer la table Pilote sans perturber l’intégrité
référentielle :
Commande RENAME Commande ALTER TABLE
RENAME Pilote TO Naviguant; ALTER TABLE Pilote RENAME TO Naviguant;

5. Suppression d’une table


La suppression d’une table de l’environnement de travail se fait en utilisant l’instruction
DROP TABLE.
DROP TABLE nom_table [CASCADE CONSTRAINT] ;
Remarque :
L’option CASCADE CONSTRAINT permet de régler les problèmes de clés étrangères
actives contenues dans d’autres tables et qui référence la table à supprimer.

Vous aimerez peut-être aussi