Système d’information
LANGAGE SQL
1. Déclaration des tables
1. La syntaxe
Pour créer une table on utilise la commande CREATE TABLE. Voici sa syntaxe :
Create table < nom de table > ( { < element de table > } ) ;
Voici comment se compose la définition des éléments de table :
< élément de table > : = < définition attribut > / < contrainte de table >
Voilà donc comment s'écrit la création d'une table :
Create table < nom de table >
(< nom_attribut1 > < type attribut1 > < contrainte attribut1 >,
< nom_attribut2 > < type attribut2 > < contrainte attribut >,….. )
< contrainte de table >
Il y a des règles à respecter :
· Chaque table de la base de donnée possède un nom unique
· Une table est composée d'au moins un attribut
· Chaque attribut au sein d'une table possède un nom unique
· On peut mettre des contraintes sur les attributs lors de la création de
table.
Exemple :
Create table Commande ( numcom NUMERIC (5), datecomm DATE)
Ici, on remarquera que l'on crée la table COMMANDE avec 2 attributs: numcomm
pour le numéro de commande (qui sera une valeur numérique à 5 chiffres) et
datecomm qui représente la date de la commande (ce sera du type DATE).
1
Système d’information
Déclaration d'un attribut
Quand on déclare un attribut on doit lui affecter un nom ainsi qu'un type
de donnée et aussi il est possible de lui attribuer une valeur par défaut
et une contrainte.
Voilà la syntaxe de la déclaration d'un attribut :
< nom attribut > < type_données > [default <valeur> ]
[contrainte_attribut]
NB : Ce qui est entre crochet signifie que ce sont des définitions
optionnelles.
¤ Les types de données
Type de donnée Syntaxe Commentaires
Chaîne de caractères de longueur
Alphanumérique CHAR(n)
fixe n
Alphanumérique VARCHAR(n) Chaîne de n caractères maximums
Nombre de n chiffres avec en
Numérique NUMERIC(n,[d])
option le nombre de décimales.
Numérique INTEGER Entier signé de 32 bits
Numérique SMALLINT Entier signé de 16 bits
Numérique FLOAT Nombre réel (avec virgule)
Temps DATE Date au format : JJ/MM/AA
Temps TIME Heure au format : hh : mm :ss
Temps TIMESTAMP Date et heure
¤ La valeur par défaut : default
Le langage SQL permet de définir une valeur par défaut lorsqu'un champ de
la base n'est pas renseigné grâce à la clause DEFAULT. Cela permet
notamment de faciliter la création de tables, ainsi que de garantir qu'un
champ ne sera pas vide.
La clause DEFAULT doit être suivie par la valeur à affecter. Cette valeur
peut être un des types suivants:
constante numérique
constante alphanumérique (chaîne de caractères)
le mot clé USER (nom de l'utilisateur)
le mot clé NULL
le mot clé CURRENT_DATE (date de saisie)
le mot clé CURRENT_TIME (heure de saisie)
le mot clé CURRENT_TIMESTAMP (date et heure de saisie)
2
Système d’information
¤ Les contraintes d'attribut
Il est possible d'exiger des contraintes sur les attributs d'une table.
Voici la liste de ces contraintes :
· La valeur nulle impossible : NOT NULL
· L'unicité : UNIQUE . Il existe aussi PRIMARY KEY qui équivaut à
l'association de NOT NULL+ UNIQUE mais on ne peut mettre qu'une clé
primaire (PRIMARY KEY) par table.
· La contrainte référentielle qui pose la contrainte sur le fait qu'un
attribut doit exister dans une autre table. La syntaxe est donc :
REFERENCES <table référencée> [ <attribut référencé > ]
· La contrainte générale : sa syntaxe est : CHECK <condition >. La
condition peut être simple (exemple : CHECK BETWEEN 1 and 10).
Exemple : On veut créer la table des commandes comportant 3 attributs : le
numéro de commande qui doit être unique et non nul (sinon une commande ne
peut être identifiée) la date de commande et le numéro de fournisseur.
Create table COMMANDE (numcom NUMERIC (5) PRIMARY KEY,
Datecom DATE,
Numfou NUMERIC(5) REFERENCES FOURNISSEUR) ;
2. Modification de la structure d’une table
Il peut parfois être intéressant de renommer une table, c'est la clause
RENAME qui permet cette opération. La syntaxe de cette clause est :
RENAME TABLE Ancien_Nom TO Nouveau_Nom
Suppression de colonnes
La clause ALTER permet la modification des colonnes d'une table. Associée
avec la clause DROP COLUMN, elle permet de supprimer des colonnes. La
syntaxe est la suivante :
ALTER TABLE Nom_de_la_table
DROP COLUMN Nom_de_la_colonne
Ajout de colonnes
Associée avec la clause ADD, la clause ALTER permet l'ajout de colonnes à
une table. La syntaxe est la suivante :
ALTER TABLE Nom_de_la_table
ADD Nom_de_la_colonne Type_de_donnees
Modification de colonnes
Associée avec la clause MODIFY, la clause ALTER permet la modification du
type de données d'une colonne. La syntaxe est la suivante :
ALTER TABLE Nom_de_la_table
MODIFY Nom_de_la_colonne Type_de_donnees
3
Système d’information
3. Insertion de tuples (lignes)
En SQL, pour insérer des nouvelles données dans une table on utilise la
commande INSERT. Pour insérer les données dans une ligne d'une table on
utilise INSERT avec la clause VALUES. On peut aussi insérer des données à
partir d'une autre table, c'est à dire que l'on utilise les données d'une
table pour remplir une autre table, dans ce cas on utilise la clause
SELECT.
· Voici la syntaxe pour Insert avec la clause Values :
Insert Into < Nom de table > [ <nom des attributs > ]
Values ( < valeur attribut1>, < valeur attribut 2>, … )
Exemple : On veut insérer un nouvel employé qui s'appelle Burton qui est
Directeur, son responsable est l'employé n° 15, etc..
Insert Into Etudiant
Values ( 52006, Abdi, Ali, 01/13/88, NULL)
NB : ici on ne spécifie pas le nom des attributs car on veut tous les
remplir. On met la valeur NULL aux champs qui n'ont pas de valeur sauf si
on a défini que l'attribut devait absolument avoir une valeur.
4. Mise à jour de tuples
Pour la mise à jour des données, la modification on utilise la commande
UPDATE.
Voici sa syntaxe :
Update < nom de table >
Set { < nom attribut > = valeur }
Where < condition de recherche >
Exemple : On veut augmenter le salaire de Perrin de 10%.
Update < EMPLOYES >
Set { adresse = hassiba ben bouali }
Where Matricule = " 52006 "
4. Suppression de tuples
Pour supprimer un tuple dans une table on utilise la commande DELETE.
Voici sa syntaxe :
Delete From < nom table >
Where < condition de recherché >
Exemple :
Delete From etudiant
Where matricule = " 52006 "