Vous êtes sur la page 1sur 22

ENSIT

Chapitre VI

Le langage SQL:
Langage de Définition des Données et Langage
de Manipulation des Données
Introduction
• Le terme SQL « Structured Query Language » signifie Langage
d’interrogation structuré.

• En fait SQL est un langage complet de gestion de bases de données


relationnelles (SGBDR).

• Il a été conçu par IBM dans les années 70. Il est devenu le langage
standard des SGBDR.

• C’est à la fois:

- Un Langage de Définition des Données (LDD)


- Un Langage de Manipulation des Données (LMD)
- Un Langage d’Interrogation des Données (LID)
- Un Langage de Contrôle des Données (LCD)
2
Langage de Définition des Données
1. La commande « CREATE TABLE»

• L'ordre CREATE TABLE permet de créer une table en définissant le


nom et le type de chacune des colonnes de la table.

• La syntaxe simplifiée de cette commande est:

CREATE TABLE nom-table (nom-colonne1 type1, nom-colonne2 type2,…);

Exemple1

CREATE TABLE article (ref VARCHAR2(10),


nom VARCHAR2(30),
prix NUMBER(9,2),
datemaj DATE);
3
Langage de Définition des Données
A- Les principaux types de données (utilisés par Oracle)

Type Definition
CHAR (n) Chaîne de n caractères de taille fixe jusqu’à 2000 caractères
VARCHAR2(n) Chaîne de n caractères de longueur variable jusqu’à 4000 caractères

LONG (taille) Chaîne de caractères de longueur variable jusqu’à 2 gigaoctets.


DATE Date dont le format standard est JJ-MM-AA
TIMESTAMP Date et Heure (jour, mois, année, heure, minutes et secondes).
NUMBER (n) Nombre entier de taille n
NUMBER (n, m) Nombre réel pouvant avoir n chiffres dont m chiffres après la virgule
Les types LOB (Large C’est un type permettant de stocker des informations de grande taille telles
OBject) que du texte (CLOB), des images ou de la vidéo (BLOB) et dont la capacité
maximum de stockage est de 4 gigaoctets (Oracle 8) et 8 téraoctets (Oracle
10g).
4
Valeur NULL
Une colonne qui n'est pas renseignée, et donc vide, est dite
contenir la valeur NULL.

Cette valeur n'est pas zéro, c'est une absence de valeur

5
Langage de Définition des Données
B-Expression des contraintes d’intégrités

• Lors de la création de la table, on peut spécifier des contraintes


d’intégrité portant sur une colonne ou sur plusieurs colonnes.

• Il existe des contraintes :


sur une colonne : la contrainte porte sur une seule colonne. Elle suit la
définition de la colonne dans un ordre CREATE TABLE.

sur une table : la contrainte porte sur une ou plusieurs colonnes. Elle
se place au même niveau que les définitions des colonnes dans un
ordre CREATE TABLE.

• Chaque contrainte peut être nommée comme suit:

CONSTRAINT nom-contrainte définition-contrainte


6
Langage de Définition des Données
• Les contraintes d’intégrité possibles sont:

a- Valeur nulle impossible (syntaxe NOT NULL)


b- Contrainte d’unicité: interdit qu’une colonne (ou la concaténation
de plusieurs colonnes) contienne deux valeurs identiques.

Pour une contrainte sur table:


UNIQUE (colonne1, colonne2,…)
Pour une contrainte sur une colonne
UNIQUE

c- Contrainte de clé primaire


Pour une contrainte sur table:
PRIMARY KEY (colonne1, colonne2,…)
Pour une contrainte sur une colonne
PRIMARY KEY 7
Langage de Définition des Données
d- Contrainte de clé étrangère
Pour une contrainte sur une table :
FOREIGN KEY (colonne1, colonne2,...)
REFERENCES tableref [(col1, col2,...)]
[ON DELETE CASCADE]
Pour une contrainte sur une colonne :
[FOREIGN KEY (colonne1)]
REFERENCES tableref [(col1 )]
[ON DELETE CASCADE]

• L'option ON DELETE CASCADE indique que la suppression d'une


ligne de tableref va entraîner automatiquement la suppression des
lignes qui la référencent dans la table.

8
Langage de Définition des Données
Exemple
La relation Emp

Nemp Nome Prene Sal Poste Ndept


100 Bjaoui Leila 450 Secrétaire 1
101 Malki Ali 600 Technicien 1
103 Bjaoui Mohamed 850 Ingénieur 2
104 Gharbi Salwa 500 Secrétaire 2

La relation Dept
Ndept Nomd
1 Finance
2 Marketing

9
Langage de Définition des Données

• Supprimer le département N°2 suppression des


employés travaillant dans le département N°2.

Ndept Nomd
1 Finance
La relation Dept

Nemp Nome Prene Sal Poste Ndept


100 Bjaoui Leila 450 Secrétaire 1
101 Malki Ali 600 Technicien 1

La relation Emp

10
Langage de Définition des Données

• Si cette option n'est pas indiquée, il est impossible de


supprimer des lignes de tableref qui sont référencées
par des lignes de la table.

• Si on ne spécifie pas on delete cascade lors de la


création de la table emp.
Supprimer le département N°2.

Affichage d’une erreur


ORA-02292: integrity constraint violated-child record
found .

11
Langage de Définition des Données
• e- Contrainte « CHECK »

CHECK(condition)

• Cette contrainte spécifie une condition que les colonnes de chaque


ligne devront vérifier.
Exemple 1

CREATE TABLE EMP(


NEMP NUMBER(5) CONSTRAINT KEMP PRIMARY KEY,
NOME VARCHAR2(10) CONSTRAINT NOM_UNIQUE UNIQUE
CONSTRAINT MAJ CHECK (NOME = UPPER(NOME)),
SAL NUMBER(8,3),
NDEPT NUMBER(2) CONSTRAINT R_DEPT REFERENCES DEPT(NDEPT
CONSTRAINT DEPART CHECK (NDEPT IN (10, 20, 30, 35, 40)));

12
Langage de Définition des Données
Exemple 2

CREATE TABLE Produit (


ID NUMBER CONSTRAINT PRODUIT_PK PRIMARY KEY,
NOM VARCHAR2 (10),
STOCK NUMBER CONSTRAINT STOCK_POSTIF CHECK (STOCK>= 5));

Exemple 3

CREATE TABLE PARTICIPATION (


MATR NUMBER(5) CONSTRAINT R_EMP REFERENCES EMP
(NEMP),
CODEP VARCHAR2(5) CONSTRAINT R_PROJET REFERENCES
PROJET,
CONSTRAINT PKPART PRIMARY KEY(MATR, CODEP));
13
Langage de Définition des Données
2-La commande « DROP TABLE»
• Elle permet de supprimer une table.
• Les lignes et la définition elle-même de la table sont détruites.

DROP TABLE nom-table [cascade constraints];

Si la clé primaire est référencée dans d’autres tables par des


contraintes d’intégrité référentielles (REFERENCES), la
clause CASCADE CONSTRAINTS permet de les supprimer
dans ces tables.

Emp(Nemp, nomE, prenE, sal, poste, #Ndept);


Dept (Ndept, nomd);

Drop table Dept cascade constraints; permet de supprimer la


table dept et la contrainte de clé étrangère associée à Ndept
dans Emp 14
Langage de Définition des Données
Exemple

La suppression de la table Dept

Nemp Nome Prene Sal Poste Ndept


100 Bjaoui Leila 450 Secrétaire 1
101 Malki Ali 600 Technicien 1
103 Bjaoui Mohamed 850 Ingénieur 2
104 Gharbi Salwa 500 Secrétaire 2
La relation Emp

L’attribut Ndept devient un attribut


de la table emp et il n’est plus une
clé étrangère
15
Langage de Définition des Données
3- La commande « ALTER TABLE»
• Elle permet de:
- ajouter une nouvelle colonne;
- modifier une colonne existante ;
- supprimer une colonne existante.
A- Ajout d’une colonne
ALTER TABLE nom-table
ADD (col1 type1, col2 type2,…)

Exemple
ALTER TABLE personne
ADD (email_valide char(1)
CONSTRAINT personne_email_valide CHECK (email_valide in ('o', 'n')));
B- Modification d’une colonne

ALTER TABLE nom-table


MODIFY (col1 type1, col2 type2, ...); 16
Langage de Définition des Données
Exemple
ALTER TABLE personne
MODIFY (nom varchar2 (35))

C-Suppression d’une colonne

ALTER TABLE nom-table


DROP (liste des colonnes);

Exemple
ALTER TABLE personne
DROP (nom, prenom);

La colonne supprimée ne doit pas être référencée par une clé


étrangère.

17
Langage de Définition des Données
D-Ajouter, modifier, supprimer ou renommer une contrainte

• Les contraintes d'intégrité peuvent être ajoutées ou supprimées par


la commande ALTER TABLE. On peut aussi modifier l'état de la
contrainte par MODIFY CONSTRAINT.

Exemple
ALTER TABLE EMP
DROP CONSTRAINT NOM_UNIQUE
ADD CONSTRAINT SAL_MIN CHECK (SAL > 200)
RENAME CONSTRAINT NOM1 TO NOM2
MODIFY CONSTRAINT SAL_MIN DISABLE

18
Langage de Manipulation des Données
1. Insertion des données

INSERT INTO table (col1,..., coln ) VALUES (val1,...,valn )

Exemple1

DEPT( Ndept, nomd, lieu)


INSERT INTO DEPT VALUES (20, 'RECHERCHE‘, ‘GRENOBLE'')

Exemple2

INSERT INTO DEPT (Ndept, Nomd) VALUES (20, 'RECHERCHE‘)

Insérer des valeurs uniquement


pour Ndept et Nomd 19
Langage de Manipulation des Données
2. Modification des données

UPDATE table
SET col1 = exp1, col2 = exp2, ...
WHERE prédicat;

Exemple
UPDATE EMP
SET NDEPT = 10
WHERE NOME = ‘GHARBI‘;

3. Suppression des données

DELETE FROM table


WHERE prédicat;

Exemple
DELETE FROM EMP
20
WHERE sal>600;
Exercices
Exercice 1
On considère le Schéma relationnel de la base de données « Société »: 
U(NU, NomU, VilleU)
P(NP, NomP, Couleur, Poids)
F(NF, NomF, Statut, VilleF)
PUF (#NP, #NU, # NF, Quantité)
 
Exprimer les requêtes suivantes en SQL 
1. Créer ces relations en respectant les contraintes suivantes :
- NomU, NomP et NomF ne doivent pas être nulles
- La ville de l’usine est Tunis, Sfax ou Gabès
- Le poids d’un produit est supérieur à 100g
2. Ajouter un nouveau fournisseur :100, Bejaoui, sous-traitant, Tunis
3. Ajouter un nouveau produit sans spécifier la couleur et le poids 
4. Supprimer les livraisons de quantité supérieure à 60.
5. Changer la ville du fournisseur N°1 : il a déménagé à Bizerte.

21
Exercices
Exercice 2
On considère le Schéma relationnel de la base de données « Société »:
 
CLIENT (idclient, Nom, prenom, ville)
COMPTE (idcompte, type, #idproprietaire)
OPERATION (idop, montant, information, #idcompte)

1.Créer les relations présentées ci-dessus avec nom et prénom du client


sont non nulles
2. Insérer trois tuples de votre choix dans les tables associées 
3. Ajouter la contrainte suivante : le montant doit être différent de 0
4. Supprimer la contrainte le nom est non nulle de la table client
5. Supprimer la table compte  

22