LE LANGAGE SQL
Prof. Anouar
Mme SanaeEs-saleh
MAZOUZ
Objectifs
Qu’est ce que la norme SQL ?
Connaître Les bases du langage SQL.
2
SGBDR : SQL
Standard reconnu par ISO depuis 1987, langage
d'interrogation structuré (définition et manipulation
de Base de Donnée Relationnelle)
Histoire :
Années 70 : SEQUEL (IBM),
1981 : 1er SGBD sous SQL,
1986 : Normalisation SQL/86.
3
Base de données (Suite)
La définition d’un schéma logique comprend
essentiellement deux parties :
La description des tables et de leur contenu
La définition des contraintes qui portent sur les
données de la base.
La spécification des contraintes est souvent placée au
second plan bien qu’elle soit en fait très importante.
4
Base de données (Suite)
La spécification des contraintes permet d’assurer
des contrôles sur l’intégrité des donnés qui
s’imposent à toutes les applications accédant à
cette base.
Un dernier aspect de la définition d’un schéma est
la description de la représentation physique.
5
SQL
Il existe plusieurs versions de SQL.
Le plus ancien standard date de 1989. Il a été révisé de manière
importante en 1992 : la norme résultant de cette révision est
SQL-92 ou SQL2.
Une extension (SQL3) comprenant l’introduction de
caractéristiques orientées-objet est nouvellement introduit en
proposant de nouvelles fonctionnalités.
6
SQL (Suite)
Le SQL présenté dans ce cours est essentiellement
SQL2, sauf pour quelques nouveautés
explicitement indiquée.
7
SQL (Suite)
Concept de Base :
Relation Table
Tuple Ligne
Attribut Colonne
8
SQL : types de base
9
SQL : création de tables
create table latable
( col1 type1 [Cont1],
col2 type2 [Cont2]…
);
ou
create table latable
[( col1 type1 [Cont1],
col2 type2 [Cont2]...
)];
10
SQL : CONSTRAINT
les règles (ou contraintes d’intégrité) que l’on peut
demander au système de garantir :
la clé de la relation.
Un attribut dans une table est liée à la clé primaire
d’une autre table (intégrité référentielle).
La valeur d’un attribut doit être unique au sein de
la relation.
La valeur de l’attribut doit être non nulle.
toute règle s’appliquant à la valeur d’un attribut
(min et max par exemple).
11
SQL : CONSTRAINT (Suite)
Les contrainte sur un attribut :
Not null / null ;
Default ;
Unique ;
Chek(cond) ;
Primary key ;
Foreign key.
12
SQL : NOT NULL
Le NOT NULL dans la création de table indique que
l’attribut correspondant doit toujours avoir une
valeur.
Quand on parle de valeur NULL en SQL2, il s’agit en
fait d’une absence de valeur.
En conséquence :
on ne peut pas faire d’opération incluant un NULL
on ne peut pas faire de comparaison avec un NULL.
13
SQL : NOT NULL
Exemple :
CREATE TABLE personne
( id INTEGER NOT NULL,
nom VARCHAR(30) NOT NULL,
prenom VARCHAR(30) NULL,
date_naissance DATE
);
14
SQL : DEFAULT
La contrainte DEFAULT permet de préciser une valeur
qui sera automatiquement insérée en l'absence de
précision d'une valeur explicite dans un ordre
d'insertion.
CREATE TABLE cinema
(
nom VARCHAR (30) NOT NULL,
adresse VARCHAR (30) DEFAULT ‘Inconnue’
);
15
SQL : UNIQUE
La contrainte d'unicité exige que toutes les valeurs
explicites contenues dans la colonne soient uniques au
sein de la table.
CREATE TABLE personne
( id INTEGER NOT NULL,
nom VARCHAR (30) NOT NULL,
prenom VARCHAR (30) NOT NULL,
telphone CHAR(14) UNIQUE
);
16
SQL : CHECK
La norme SQL2 comprend une option CHECK
(condition) pour exprimer des contraintes portant
soit sur un attribut, soit sur une ligne.
Les contraintes les plus courantes sont celles
consistant à restreindre un attribut à un ensemble de
valeurs.
17
SQL : CHECK (Suite)
Exemple :
CREATE TABLE Film
(titre VARCHAR (50) NOT NULL,
annee INTEGER CHECK (annee BETWEEN 1890 AND 2000) NOT
NULL,
genre VARCHAR (10) CHECK (genre IN
(’Histoire’,’Western’,’Drame’)),
idMES INTEGER,
codePays INTEGER
);
18
SQL : PRIMARY KEY
La contrainte PRIMARY KEY assure qu'il n'y aura
aucune valeur redondante (doublon) dans la colonne.
Syntaxe :
CONSTRAINT nom_contrainte PRIMARY KEY
(liste_colonne)
19
SQL : PRIMARY KEY (Suite)
Exemple 1 :
CREATE TABLE personne
(
id INTEGER NOT NULL PRIMARY KEY,
nom VARCHAR(30),
prenom VARCHAR(30)
);
20
SQL : PRIMARY KEY (Suite)
Exemple 2 :
CREATE TABLE personne
( nom VARCHAR(32) NOT NULL,
prenom VARCHAR(32) NOT NULL,
telephone CHAR(14),
CONSTRAINT PK_PRS PRIMARY KEY (nom, prenom)
);
21
SQL : FOREIGN KEY
La contrainte de type FOREIGN KEY permet de mettre
en place une intégrité référentielle entre une (ou
plusieurs) colonnes d'une table et la (ou les) colonne
composant la clef d'une autre table.
Syntaxe :
- FOREIGN KEY REFERENCES table (colonne)
- CONSTRAINT nom_contrainte FOREIGN KEY
(liste_colonne) REFERENCES nom_table_ref
(liste_colonne_ref)
22
SQL : FOREIGN KEY (Suite)
Exemple 1 :
CREATE TABLE facture
(id_fct INTEGER,
Id INTEGER FOREIGN KEY REFERENCES personne (id) ,
date_fct DATE,
montant_fct DECIMAL(16,2));
23
SQL : FOREIGN KEY (Suite)
Exemple 2 :
CREATE TABLE facture
(id_fct INTEGER,
nom_prs VARCHAR(30),
prenom_prs VARCHAR(30),
date_fct DATE,
montant_fct DECIMAL(16,2),
CONSTRAINT FK_FCT_PRS FOREIGN KEY (nom_prs, prenom_prs)
REFERENCES personne (nom_prs, prenom_prs) )
24
SQL : FOREIGN KEY (Suite)
Que se passe-t-il quand la violation d’une contrainte
d’intégrité est détectée par le système ?
Par défaut, la mise à jour est rejetée, mais il est
possible de demander la répercussion de cette mise à
jour de manière à ce que la contrainte soit respectée.
Les événements que l’on peut répercuter sont la
modification ou la destruction de la ligne référencée,
On les désigne par ON UPDATE et ON DELETE
respectivement.
25
SQL : FOREIGN KEY (Suite)
La répercussion elle-même consiste à appliquer la
même opération aux lignes de l’entité composante
(option CASCADE).
26
SQL : FOREIGN KEY (Suite)
Exemple :
CREATE TABLE Salle
(nomCinema VARCHAR (30) NOT NULL,
no INTEGER NOT NULL,
capacite INTEGER,
PRIMAR KEY (no),
FOREIGN KEY (nomCinema) REFERENCES
Cinema(nomCinema)
ON DELETE CASCADE
ON UPDATE CASCADE );
27