Vous êtes sur la page 1sur 31

Cours : Fondements des Bases

de Données

CHAPITRE IV:
DÉFINITION DE DONNÉES AVEC SQL
Eléments de contenu
 Introduction à SQL
 Création d’une table
 Types de données

 Définition des contraintes

 Modification de la structure d’une table


 Ajout de nouvelles colonnes

 Modification de la structure de colonnes

 Suppression de colonnes

 Ajout de contraintes

 Suppression de contraintes

 Suppression d’une table


 Synonyme d’une table
2
SQL
 SQL (Structured Query Langage) : langage de requêtes structuré
 Langage normalisé servant à exploiter les BD relationnelles
 Historique :
 1974 : SEQUEL (Structured English Query Language) ancêtre de SQL

 1979 : premier SGBD basé sur SQL par Relational Software Inc. (Oracle)

 1986 : SQL1 (1ère norme ISO)

 1989 : Adjonction des contraintes d’intégrité de base (clé primaire et clé étrangère)

 1992 : SQL2 2ème norme  extension de SQL1 (nouveaux types et nouveaux


opérateurs

 1999 : SQL3  extension de SQL2 (introduction des types orientés objet)

3
SQL
 Il est composé de quatre parties :
 Le Langage de Définition de Données (LDD) pour créer et supprimer des
objets dans la BD (tables, contraintes d'intégrité, vues, etc.).
 utilise les commandes : CREATE, DROP, ALTER

 Le Langage de Manipulation de Données (LMD) pour la recherche,


l'insertion, la mise à jour et la suppression de données
 utilise les commandes : INSERT, UPDATE, DELETE, SELECT
 Le Langage de Contrôle de Données (LCD) pour gérer les droits sur les
objets de la base (création des utilisateurs et affectation de leurs droits)
 utilise les commandes : GRANT, REVOKE

 Le Langage de Contrôle de Transaction (LCT) pour la gestion des


transactions : validation ou annulation de modifications de données dans la BD
 utilise les commandes : COMMIT, ROLLBACK

4
Langage de Définition de Données : LDD

 La définition de données dans SQL permet la définition des


objets manipulés par le SGBD.

 Les objets : table


table, vue, index, séquence

 Les commandes du LDD sont :


 CREATE : création des objets.

 ALTER : modification de la structure des objets.

 DROP : suppression des objets.

5
Création d’une table

 Syntaxe de la création d’une table


CREATE TABLE nom_table (
col1 type [default valParDefaut] [contrainte(s) de colonne] ,

col2 type [default valParDefaut] [contrainte(s) de colonne] ,

coln type [default valParDefaut] [contrainte(s) de colonne] ,

[contrainte(s) de tables] );

6
Création d’une table
Types de données
Types de données de SQL2 Types de données ORACLE
CHAR(taille) CHAR(taille) ou NCHAR(taille)
 chaînes de caractères de longueur fixe NCHAR(taille) : chaîne de caractères enregistrée dans le
Chaines de
caractères

 remplissage de blancs jeu de caractères national (UNICODE), de longueur fixe.


 taille comprise entre 1 et 2000 octets
VARCHAR(tailleMax) VARCHAR(tailleMax)
 chaînes de caractères de long. variable 
 taille comprise entre 1 et 4000 octets VARCHAR2(tailleMax), NVARCHAR2(tailleMax)
entier : SMALLINT (2 octets) ORACLE accepte tous les types numériques de SQL2 mais
INTEGER (4 octets) il les traduit dans ses propres types :
Numérique

décimaux à virgule flottante : • NUMBER : nombres entiers positifs et négatifs 


REAL jusqu’`a 38 chiffres significatifs
DOUBLE PRECISION ou FLOAT
• FLOAT, FLOAT(p) : nombre en virgule flottante
décimaux à virgule fixe : • NUMBER(n, m) : nombre en virgule fixe
DECIMAL(nbChiffres, nbDécimales)
NUMERIC(nbChiffres, nbDécimales)

DATE (pour les dates) le type DATE remplace DATE et TIME de SQL2
Temporel

TIME (pour les heures, minutes et secondes) DATE correspond à une date avec une précision jusqu`a la
TIMESTAMP (pour un moment précis : date et seconde
heure, minutes et secondes

7
Création d’une table
Types de données ORACLE
 Caractères : CHAR, CHAR(N), VARCHAR2(N), LONG, CLOB, …
 CHAR (n) : stocke des chaînes comportant au maximum 255 caractères dans une colonne de longueur fixe.
Remarque : une colonne de type CHAR ne stocke qu'un seul caractère.
 VARCHAR / VARCHAR2 : stocke jusqu'à 4000 caractères dans une seule colonne pour des chaînes de
longueur variable.
 LONG : donnée de type caractère, de longueur variable, allant jusqu'à 2 G. On peut stocker et récupérer
ces données mais pas les manipuler.
 CLOB (Character Large Object) : données en volume important à base de caractères, allant jusqu’à 4 G

 Numériques : NUMBER, NUMBER(n), NUMBER(n,m), FLOAT, …


 NUMBER : stocke les nombres en général entiers positifs et négatifs.
 NUMBER(n) ou NUMBER(n,m)
 n : varie de 1 à 38 et indique le nombre maximum des chiffres à stocker.
 m : indique le nombre de chiffres situés à droite de la virgule si m est positive et à gauche si m est négative.
 FLOAT : stocke des nombres en virgule flottante.

 date/heure : DATE, TIMESTAMP, …

 Binaires : BLOB, BFILE, …


 BLOB (Binary Large Object) : données binaires (image, son, vidéo, …), conservées dans la BD, allant jusqu’à 4 G
 BFILE : données binaires enregistrées dans un fichier externe, allant jusqu’à 4 G

8
Création d’une table
Types de données
Exemple : Créer la table Produit ayant comme schéma :
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)

 Numprod : de type numérique de taille 6,


 Desprod : de type caractère variable de taille 15,
 Couleur : de type caractère sur une position,
 Poids : de type numérique sur 8 positions dont 3 chiffre après la virgule,
 Qte_stk : de type numérique sur 7 positions dont 3 chiffres après la virgule,
 Qte_seuil : de type numérique sur 7 positions dont 3 chiffres après la virgule,
 Prix : de type numérique sur 10 positions dont 7 chiffres avant la virgule.

CREATE TABLE Produit (Numprod number(6) primary key,


Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3));

9
Création d’une table
Définition de contraintes

 Contrainte : C’est une règle qui définit la cohérence d'une donnée ou


d'un ensemble de données de la BD.

 Une contrainte peut être déclarée de deux manières :


 Contrainte de colonne : déclarée en même temps que la définition d’une
colonne (contrainte monocolonne)

 NULL/NOT NULL, UNIQUE, PRIMARY KEY, REFERENCES, CHECK

 Contrainte de table : déclarée en dehors de la définition d’une colonne. Elle peut


concerner une ou plusieurs colonnes. Elle peut être personnalisée par un nom.

 UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK

10
Création d’une table
Définition de contraintes
 Contraintes de colonne :
 NULL / NOT NULL : précise si une valeur doit obligatoirement être saisie dans la
colonne ou non

 PRIMARY KEY : précise si la colonne est la clé de la table

 UNIQUE : impose des valeurs distinctes ou NULL au niveau de la colonne

 CHECK (condition) : impose un domaine de valeurs pour une colonne en vérifiant une
certaine condition. La condition sur la colonne peut utiliser :
 un opérateur de comparaison  CHECK (salaire >= 500)
 la clause between val1 and val2  CHECK (note BETWEEN 0 AND 20)

 la clause in (liste de valeurs)  CHECK (grade IN ('Copilote‘, 'Commandant'))

 REFERENCES nomTable (nomColonne) [ON DELETE { CASCADE | SET NULL}] :


permet de faire référence à des valeurs préexistantes dans une colonne d'une autre table
(intégrité référentielle)
11
Création d’une table
Définition de contraintes
 Contraintes de table :

[CONSTRAINT nomContr] - UNIQUE (col1 [,col2]…)


- PRIMARY KEY (col1 [,col2]…)
- CHECK (condition)
- FOREIGN KEY (col1 [,col2]…) REFERENCES
nomTableMere (col1 [,col2]…) [ON DELETE { CASCADE | SET NULL}]

La directive ON DELETE dispose de deux options :


 CASCADE : si l’enregistrement père est supprimé alors suppression de tous les
enregistrements fils rattachés à ce père
 SET NULL : positionne à NULL les clés étrangères des enregistrements fils
 sans supprimer les enregistrements fils
12
Création d’une table
Définition de contraintes

ON DELETE CASCADE

 CREATE TABLE parent (id_p number PRIMARY KEY);

 CREATE TABLE fils (id_f number PRIMARY KEY,

pid number REFERENCES parent(id_p) ON DELETE CASCADE);

 S’il y a des lignes qui vont être supprimées de la table parent,


les lignes référencées dans la table fils seront automatiquement
supprimés.

13
Création d’une table
Définition de contraintes

ON DELETE SET NULL

 CREATE TABLE parent (id_p number PRIMARY KEY);

 CREATE TABLE fils (id_f number PRIMARY KEY,

pid number REFERENCES parent(id_p) ON DELETE SET NULL);

 S’il y a des lignes qui vont être supprimées de la table parent,


les lignes référencées dans la table fils seront automatiquement
mis à NULL (càd la clé étrangère pid est mis à NULL dans tous les
lignes référencées de la table fils)

14
Création d’une table
Définition de contraintes
Exemples :
CREATE TABLE Produit (id_pd number primary key,
Des_pd varchar2(15) unique,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3),
Constraint CK1_Produit CHECK (Poids >=0),
Constraint CK2_Produit CHECK (Qte_stk >= Qte_seuil) );

CREATE TABLE Ligne_cde ( num_cde varchar2(10),


id_pd NUMBER,
qtite_cde NUMBER CHECK (qtite_cde >0),
CONSTRAINT PK_ligne_cde PRIMARY KEY (num_cde, id_pd) ,
CONSTRAINT FK_pd_ligne FOREIGN KEY (id_pd) REFERENCES Produit (id_pd),
CONSTRAINT FK_cde_ligne FOREIGN KEY (num_cde) REFERENCES Commande (num_cde)
15
ON DELETE CASCADE) ;
Modification de la structure d’une table

 Possibilités de modification de la structure de table :


 Ajout de nouvelles colonnes

 Modification de la structure de colonnes

 Suppression de colonnes

 Ajout de contraintes

 Suppression de contraintes

16
Modification de la structure d’une table
1ère forme : Ajout de nouvelles colonnes

 Syntaxe :

ALTER TABLE nom_table

ADD (col1 type1 [contr. de colonne],

col2 type2 [contr. de colonne],

...

coln typen [contr. de colonne]) ;

 Exemple :

Ajouter la colonne Type_clt à la table client :

ALTER TABLE CLIENT ADD Type_clt char(3) ;


17
Modification de la structure d’une table
2ème forme : Modification de la structure de colonnes

 Augmenter/Diminuer la taille de colonne


 Modifier les contraintes de colonnes (DEFAULT, NOT NULL, UNIQUE,
PRIMARY KEY ou FOREIGN KEY).

 Syntaxe : ALTER TABLE nom_table


MODIFY (col1 type [contr de colonne],
...
coln type [contr de colonne]) ;

Exemple : Changer le Type_clt de char(3) en char(5) :


 ALTER TABLE CLIENT MODIFY Type_clt char(5) ;

Remarque : Pour modifier le nom d'une colonne :


ALTER TABLE nom_table RENAME COLUMN ancien_nomCol TO nouv_nomCol ;
18
Modification de la structure d’une table
3ème forme : Suppression de colonnes

 Syntaxe :
ALTER TABLE nom_table

DROP COLUMN ( col1 , col2 ,…, coln ) ;

 Exemple : Magasin (NumMag, Adresse, Ville, Surface)

Supprimer le champ Ville de la table Magasin

ALTER TABLE Magasin DROP COLUMN Ville ;

19
Modification de la structure d’une table
4ème forme : Ajout de contraintes

 Syntaxe :

ALTER TABLE nom_table

ADD CONSTRAINT Def_de_contrainte ;

 Exemple :
Ajouter à la table Magasin la contrainte suivante : la surface doit être
comprise entre 10 et 100 m2

ALTER TABLE Magasin


ADD CONSTRAINT ck1_magasin CHECK(surface between 10 and 100) ;

20
Modification de la structure d’une table
5ème forme : Suppression de contraintes

A- Suppression d'une contrainte clé primaire :

ALTER TABLE nom_table

DROP PRIMARY KEY [CASCADE] ;

Remarque :
 L'option CASCADE supprime les contraintes des clés étrangères dans
les tables dépendantes (fils)
Exemple :
Supprimer la contrainte clé primaire de la table magasin

ALTER TABLE Magasin DROP PRIMARY KEY CASCADE ;

21
Modification de la structure d’une table
5ème forme : Suppression de contraintes

B- Suppression d'une contrainte autre que la clé primaire


ALTER TABLE nom_table

DROP CONSTRAINT nom_contrainte ;

Exemple : Supprimer la contrainte sur le poids des produits


ALTER TABLE Produit DROP CONSTRAINT Ck1_Produit ;

Remarque : Pour retrouver les différentes contraintes avec leur


propriétés, on peut utiliser la commande suivante :

Select * from user_constraints [where table_name = 'NOMTABLE' ];

N.B. Pour cette commande, le nom de la table doit être écrit en majuscule

22
Suppression d’une table

 Syntaxe :
DROP TABLE nom_table [CASCADE CONSTRAINTS] ;

 CASCADE CONSTRAINTS : Cette option détruit, dans les tables


«fils », toutes les contraintes d'intégrité référentielles qui se
reflètent aux clés uniques ou primaires de la table à supprimer

 sans rien modifier aux données qui y sont stockées.

 Exemple :
Supprimer la table Magasin :

DROP TABLE Magasin CASCADE CONSTRAINTS ;

23
Synonyme d’une table

Renommer : Pour changer le nom d'une table existante :


RENAME ancienNom TO nouveauNom ;
ou
ALTER TABLE ancienNom RENAME TO nouveauNom ;

Synonyme : Il est également possible de donner à une même table plusieurs


noms différents appelés synonymes.

CREATE SYNONYM nom_synonyme FOR nom_table ;

 Pour supprimer un synonyme donné, on utilise la commande :

DROP SYNONYM nom_synonym ;

 Remarque : La suppression d'une table implique la suppression des synonymes


correspondants.
24
Cours : Fondements des Bases
de Données

CHAPITRE V :
MANIPULATION DE DONNÉES AVEC SQL
Eléments de contenu
Les ordres SQL de manipulation

 INSERT
 Insertion (ajout) de ligne(s) dans une table
 UPDATE
 Mise à jour (modification) de une ou plusieurs colonnes de
une ou plusieurs lignes
 DELETE
 Suppression de une ou plusieurs lignes

26
Insertion
Syntaxe :
Pour insérer un tuple complètement spécifié : Nom_table
INSERT INTO nom_Table VALUES (val1,..., valn); col1 col2 …. coln
… …. … …..
… …. … …
val1 val2 ….. valn

Pour insérer un tuple incomplètement spécifié :


INSERT INTO nom_Table (liste_attributs) VALUES (val1,..., valp);

On peut insérer un tuple à partir d'une relation ayant le même


schéma.
INSERT INTO nom_Table
SELECT *
FROM ...

27
Insertion
EXEMPLES
Sur les relations Étudiant (Num, Nom, Prénom, Age, Ville, CodePostal)
ClubThéâtre(Num, Nom, Prénom)

Ajouter l'étudiant Salah Aloui, 21 ans, habitant Sfax ville avec le numéro 634
INSERT INTO Étudiant
VALUES (634, 'Aloui', 'Salah', 21, 'Sfax ville', '3000');

Ajouter tous les étudiants de Sfax dans le Club de Théâtre


INSERT INTO ClubThéâtre
SELECT Num, Nom, Prénom
FROM Étudiant
WHERE CodePostal LIKE '30__' ;

REMARQUE : INSERT INTO Etudiant


VALUES (123,’Tounsi’, ‘Fatma’, NULL, NULL, NULL);

INSERT INTO Etudiant (Num, Nom, Prénom)


28
VALUES (123,’Tounsi’, ‘Fatma’) ;
Modification

Syntaxe :

UPDATE nomTable
SET colonne1 = expr1, colonne2 = expr2 , …
[WHERE condition] ;

Les expressions peuvent être


 une constante
 une valeur NULL
 une clause SELECT

29
Modification
EXEMPLES
Etudiant (Num, Nom, Prénom, Age, Ville, CodePostal)
Augmenter d'un an l’âge de tous les étudiants.
UPDATE etudiant SET age = age +1 ;

Changer le nom et l’âge de l’étudiant numéro 100 ; nouveau nom : «NOURI» ,


nouvel âge : 21
UPDATE etudiant
SET nom = 'NOURI', age = 21
WHERE Num = 100;
Employe (idEmp, Nom, Prenom, Adresse, salaire, #idService)
Augmenter de 10% les salaires des employés du service « info »
UPDATE employe
SET salaire = salaire * 1.1
WHERE idService = 'info';
30
Suppression
Syntaxe :
DELETE FROM nomTable [ WHERE condition ] ;
o Exemple :
Retirer de la liste tous les étudiants de plus de 22 ans
DELETE FROM Étudiant WHERE Age > 22;
o Remarques :
•Si on supprime tous les tuples d'une relation, le schéma de relation existe
toujours !

•Pour vider une table (supprimer tous ses tuples), on peut utiliser
TRUNCATE :
TRUNCATE TABLE nomTable ;
Exemple : TRUNCATE TABLE etudiant ;

 C’est équivalent à « delete from nomTable ; »


31

Vous aimerez peut-être aussi