Le langage de définition des données (LDD)

Le langage de définition des données (Data Definition Language en anglais) est la partie du langage SQL qui permet d’effectuer des opérations sur les objets qui composent la structure d’une base de données (i.e. le contenant). Ces objets sont des TABLES, des VUES ou des INDEX. (La section présente se concentre sur la manipulation des tables et des index; les vues font l’objet d’une section ultérieure).

Les opérations possibles avec le LDD sont la création d’objets, le retrait des objets (effacer) et leur modification (sous certaines réserves).

1.1 Créer une table

Lorsqu’on crée une table, on doit l’identifier (lui donner un nom) et définir sa structure, i.e. les colonnes qui la composent.

CREATE TABLE table
(colonne type de données [NOT NULL] , ... );

L’expression NOT NULL signifie qu’à l’ajout d’une nouvelle ligne dans la table, la colonne doit obligatoirement posséder une valeur. Le terme NULL dans cette colonne ne sera pas tolérée.

Créez une table qui permet d’enregistrer des factures.


CREATE TABLE Facture
(no_facture VARCHAR(10) NOT NULL,
date_facture DATETIME NOT NULL,
nom_client VARCHAR(40),
montant DECIMAL(8,2) );

1.1.1 La contrainte de clé primaire (PRIMARY KEY)

La clause PRIMARY KEY est utilisée pour identifier la clé primaire de la table. Les clés primaires ont toujours comme caractéristiques d’être obligatoires et uniques. Cette contrainte permet de s’assurer du respect de ces caractéristiques. À noter qu’il y a toujours une seule clé primaire par table.

Créez une table qui permet l’enregistrement de la liste téléphonique de vos copains. Considérez que le nom et la date de naissance constituent une clé primaire valable.

CREATE TABLE Copain
(nom VARCHAR(30) NOT NULL,
prénom VARCHAR(30) NOT NULL,
date_naissance DATETIME,
téléphone VARCHAR(10),
CONSTRAINT Copain_pk PRIMARY KEY (nom, date_naissance));

Ainsi définie, la structure de la table exige une valeur pour les colonnes ‘nom’ et ‘date_naissance’, et la valeur combinée de ces colonnes doit être unique pour l’ensemble des lignes de la table.

1.1.2 La contrainte d’unicité (UNIQUE)

Lorsque certaines valeurs doivent être uniques sans qu’il s’agisse de la clé primaire, on peut utiliser une contrainte d’unicité. Cette contrainte s’assure que la valeur soit unique pour toute la table, par contre des valeurs nulles sont permises.

CONSTRAINT contrainte UNIQUE (liste des colonnes)

1.1.3 La contrainte d’intégrité référentielle (FOREIGN KEY)

Si la table contient une clé lointaine, il est possible d’ajouter une clause qui définit une contrainte d’intégrité référentielle avec la table à laquelle fait référence la clé lointaine.

CONSTRAINT contrainte FOREIGN KEY (liste des colonnes)
REFERENCES table [(liste des colonnes)]

Lorsqu’on ajoute une nouvelle ligne dans la table où une contrainte référentielle a été définie, le SGBDR vérifie si la valeur de la clé lointaine existe déjà comme valeur de clé primaire dans la table de référence.

Définissez une contrainte d’intégrité référentielle entre la table Projet et la table Chef.

CREATE TABLE Projet
(code_projet VARCHAR(5) NOT NULL,
date_début DATE NOT NULL,
date_fin DATE ,
matricule VARCHAR(3) ,
CONSTRAINT Projet_pk PRIMARY KEY (no_projet),
CONSTRAINT Projet_fk_Chef FOREIGN KEY (matricule) REFERENCES
Chef);

Par défaut, la contrainte est établie sur la clé primaire de la table de référence. Si on désire établir la contrainte sur une autre valeur (colonnes) de la table de référence alors, dans la  clause FOREIGN KEY, il faut fournir le ou les noms des colonnes faisant l’objet de la référence.

1.2 Effacer une table

On efface une table par l’entremise de l’instruction DROP TABLE.

DROP TABLE table;

Lorsqu’une table est effacée, d’autres objets associés à cette table sont susceptibles de disparaître par la même occasion (comme les index).

1.3 Modifier une table

On peut modifier la structure d’une table existante. Le standard SQL est limité sur la nature des modifications permises (il ne permet pas la modification du type de données d’une colonne, par exemple), mais plusieurs SGBD sur le marché offrent des possibilités plus
grandes. La syntaxe qui suit est celle de SQL Server.

À noter que les modifications apportées à une table qui contient déjà des données sont susceptibles d’être restreintes. La transformation désirée doit être applicable aux données existantes.

Essentiellement, les modifications visent deux choses : les colonnes de la table, ou ses contraintes.

Pour modifier les colonnes :

ALTER TABLE table ADD colonne définition_de_colonne ;
ALTER TABLE table DROP COLUMN colonne ;
ALTER TABLE table ALTER COLUMN colonne définition_de_colonne ;
Pour modifier les contraintes :
ALTER TABLE table ADD CONSTRAINT contrainte définition_de_contrainte;
ALTER TABLE table DROP CONSTRAINT contrainte ;

À remarquer qu’il n’est pas possible de modifier une contrainte, il faut la retirer et la recréer avec dans une nouvelle forme.

Ajoutez une colonne dans la table Chef pour enregistrer le numéro de téléphone du chef de projet.

ALTER TABLE Chef
ADD telephone VARCHAR(10);

1.4 Créer un index

SQL n’exige pas qu’un utilisateur connaisse l’existence des index pour manipuler une base de données. Aucune instruction de manipulation de données ne prévoit de clause pour spécifier l’utilisation d’un index. Le SGBDR décide de lui-même si la requête composée par l’utilisateur nécessite l’utilisation d’un index. Les index sont requis pour assurer une
performance adéquate de la base de données et font partie des décisions de conception qu’un administrateur de base de données doit prendre.

L’instruction CREATE INDEX est utilisée pour ajouter un index dans la base de données.


CREATE [UNIQUE] INDEX index
ON table (liste des colonnes qui forment l’index);

Remarque:

Si le mot clé UNIQUE est inclus, alors l’index contrôlera que chaque entrée de l’index soit unique. Il sera impossible d’ajouter une nouvelle ligne dans la table qui causerait le dédoublement d’une des entrées de l’index. Typiquement, l’utilisation du caractère UNIQUE correspond à la définition d’une clé primaire, ou d’une clé alternative.

1.5 Effacer un index

On efface un index de la même façon qu’on efface une table, i.e. par l’instruction DROP.

DROP INDEX index;

 

Print Friendly, PDF & Email

Laisser un commentaire