Professional Documents
Culture Documents
LST IGI
Novembre 2011
(Institute)
01/11/2011
1 / 100
SQL est un langage relationnel, il manipule donc des tables (i.e. des
relations, cest--dire des ensembles) par lintermdiaire de requtes qui
produisent galement des tables.
Nous pouvons distinguer cinq catgories des instructions, qui permettent :
1. la dnition des lments dune base de donnes (tables, colonnes,
clefs, index, contraintes, . . .),
2. la manipulation des donnes (insertion, suppression, modication,
extraction, . . .),
3. la gestion des droits daccs aux donnes (acquisition et rvocation des
droits),
4. la gestion des transactions,
5. et enn le SQL intgr.
(Institute)
01/11/2011
2 / 100
(Institute)
01/11/2011
3 / 100
(Institute)
01/11/2011
4 / 100
(Institute)
01/11/2011
5 / 100
(Institute)
01/11/2011
6 / 100
SQL intgr
(Institute)
01/11/2011
7 / 100
(Institute)
01/11/2011
8 / 100
(Institute)
01/11/2011
9 / 100
(Institute)
01/11/2011
10 / 100
(Institute)
01/11/2011
11 / 100
Exemple : crer une relation Voiture . Une voiture est caractrise par
sa marque, sa couleur, son numro dimmatriculation et son prix.
create table Voiture (
marque varchar2(10),
couleur varchar2(10),
immatriculation char(8),
prix number(9,2));
(Institute)
01/11/2011
12 / 100
Exemple :
CREATE TABLE Clients(
Nom char(30) NOT NULL,
Prenom char(30) NOT NULL,
Age integer, check (Age < 100),
Email char(50) NOT NULL, check (Email LIKE "%@%")
)
(Institute)
01/11/2011
13 / 100
(Institute)
01/11/2011
14 / 100
(Institute)
01/11/2011
15 / 100
(Institute)
01/11/2011
16 / 100
Ajout dattributs :
alter table nom_relation
add (nom_attribut_1 type1 [default valeur1],
nom_attribut_2 type2 [default valeur2], ...) ;
Modication dattributs :
alter table nom_relation
modify (nom_attribut_1 type1 [default valeur1],
nom_attribut_2 type2 [default valeur2], ...) ;
(Institute)
01/11/2011
17 / 100
Ajouter un attribut
Syntaxe :
ALTER TABLE relation ADD denition [ FIRST j AFTER attribut]
Ajoutons lattribut fax qui est une chane reprsentant un nombre de 10
chires:
ALTER TABLE Personnes ADD fax DECIMAL(10,0)
Nous aurions pu forcer la place o doit apparatre cet attribut. Pour le
mettre en tte de la liste des attributs de la relation, il faut ajouter loption
FIRST en n de commande. Pour le mettre aprs lattribut tlphone, il
aurait fallu ajouter AFTER tlphone.
(Institute)
01/11/2011
18 / 100
(Institute)
01/11/2011
19 / 100
Supprimer un attribut
La suppression dun attribut peut incidemment provoquer des erreurs sur
les contraintes cl primaire (PRIMARY KEY) et unique (UNIQUE).
CREATE TABLE Personne (
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(40),
prnomVARCHAR(40),
adresse TINYTEXT,
tlphoneDECIMAL(10,0),
UNIQUE(nom,prnom)
)
(Institute)
01/11/2011
20 / 100
(Institute)
01/11/2011
21 / 100
(Institute)
01/11/2011
22 / 100
(Institute)
01/11/2011
23 / 100
(Institute)
01/11/2011
24 / 100
(Institute)
01/11/2011
25 / 100
(Institute)
01/11/2011
26 / 100
(Institute)
01/11/2011
27 / 100
(Institute)
01/11/2011
28 / 100
Ajouter un index
Une table ne peut comporter que 32 indexs.
Et un index ne peut porter que sur 16 attributs maximum la fois.
Syntaxe :
ALTER TABLE relation ADD INDEX index (attributs)
Exemple :
ALTER TABLE Personnes ADD INDEX nom_complet
(nom,prnom)
Dans cet exemple, on a ajout la relation Personnes un index que lon
nomme nom_complet et qui sapplique aux deux attributs nom et
prnom. Ainsi, les recherches et les tris sur les attributs nom et prnom
seront grandement amliors. Car un index apporte les changements
sous-jacents permettant doptimiser les performances du serveur de base
de donnes.
(Institute)
01/11/2011
29 / 100
Cration de vues
Une vue est une table virtuelle value chaque consultation (les donnes
ne sont pas stocke dans une table de la BD). Une vue est dnie par une
clause SELECT.
obtenir des informations synthtiques
(Institute)
01/11/2011
30 / 100
Cration de vues
Une vue est une table virtuelle value chaque consultation (les donnes
ne sont pas stocke dans une table de la BD). Une vue est dnie par une
clause SELECT.
obtenir des informations synthtiques
viter de divulguer certaines informations
(Institute)
01/11/2011
30 / 100
Cration de vues
Une vue est une table virtuelle value chaque consultation (les donnes
ne sont pas stocke dans une table de la BD). Une vue est dnie par une
clause SELECT.
obtenir des informations synthtiques
viter de divulguer certaines informations
assurer lindpendance du schma externe
(Institute)
01/11/2011
30 / 100
(Institute)
01/11/2011
31 / 100
(Institute)
01/11/2011
32 / 100
La valeur null
La valeur null est une valeur spcique en SQL qui est commune
tous les types.
Elle reprsente un attribut sans valeur connue et est manipule avec des
oprateurs spciques.
Exemple : insrer dans la relation Personne les n-uples suivants :
Alaoui Omar 12, rue des Lilas 31000 12/12/1941
Chokri Ali
11/11/1960
insert into Personne
values (Alaoui, Omar, 12, rue des Lilas, 31000, 12/12/1941) ;
insert into Personne values (Chokri, Ali, null, null, 11/11/1960)
(Institute)
01/11/2011
33 / 100
Ajouter un enregistrement
Syntaxe dune insertion standard :
INSERT INTO relation VALUES(liste exhaustive et ordonne des
valeurs)
Exemple :
CREATE TABLE Ballon (
taille INT NOT NULL,
couleur VARCHAR(40)
)
INSERT INTO Ballon VALUES(20, rouge) ok
INSERT INTO Ballon VALUES(rouge, 20) faux
INSERT INTO Ballon VALUES(rouge) faux
(Institute)
01/11/2011
34 / 100
Modier un enregistrement
Pour modier un ou des enregistrement(s) dune relation, il faut prciser
un critre de slection des enregistrement modier (clause WHERE), il
faut aussi dire quels sont les attributs dont on va modier la valeur et
quelles sont ces nouvelles valeurs (clause SET).
Syntaxe :
UPDATE [ LOW_PRORITY ] relation SET attribut=valeur, . . . [
WHERE condition ] [ LIMIT a ]
Exemple :
UPDATE Personnes SET tlphone=0156281469WHERE
nom=ChokriAND prnom = Mohamed
Cet exemple modie le numro de tlphone de Chokri Mohamed.
LOW_PRORITY est une option un peu spciale qui permet de nappliquer
la ou les modication(s) quune fois que plus personne nest en train de
lire dans la relation.
(Institute)
01/11/2011
35 / 100
Modier un enregistrement
Il est possible de modier les valeurs dautant dattributs que la relation en
contient.
Exemple pour modier plusieurs attributs :
UPDATE Personnes SET tlphone=0156281469, fax=0156281812
WHERE id = 102
Pour appliquer la modication tous les enregistrements de la relation, il
su t de ne pas mettre de clause WHERE.
LIMIT a permet de nappliquer la commande quaux a premiers
enregistrements satisfaisant la condition dnie par WHERE.
(Institute)
01/11/2011
36 / 100
Supprimer un enregistrement
Attention, la suppression est dnitive !
Syntaxe :
DELETE [ LOW_PRIORITY ] FROM relation [ WHERE condition
] [ LIMIT a ]
Exemple :
DELETE FROM Personnes WHERE nom=ChokriAND
prnom=Mohamed
Pour vider une table de tous ces lments, ne pas mettre de clause
WHERE. Cela eace et recre la table, au lieu de supprimer un un
chacun des tuples de la table (ce qui serait trs long).
(Institute)
01/11/2011
37 / 100
(Institute)
01/11/2011
38 / 100
(Institute)
01/11/2011
39 / 100
(Institute)
01/11/2011
40 / 100
(Institute)
01/11/2011
41 / 100
(Institute)
01/11/2011
42 / 100
(Institute)
01/11/2011
42 / 100
(Institute)
01/11/2011
43 / 100
(Institute)
01/11/2011
44 / 100
Fonctions dagrgations
SUM () : donne le total dun champ de tous les enregistrements
satisfaisant la condition de la requte. Le champ doit bien sur tre de type
numrique
AVG () : donne la moyenne dun champ de tous les enregistrements
satisfaisant la condition de la requte
MAX () : donne la valeur la plus leve dun champ de tous les
enregistrements satisfaisant la condition de la requte
MIN () : donne la valeur la plus petite dun champ de tous les
enregistrements satisfaisant la condition de la requte.
COUNT (*) Renvoie le nombre denregistrements satisfaisant la requte.
(Institute)
01/11/2011
45 / 100
COUNT
Permet de compter le nombre de lignes.
- COUNT(*) : compte le nombre de lignes ;
- COUNT(colonne) : compte le nombre de valeurs dans une colonne ;
- COUNT(DISTINCT colonne) : compte les valeurs distinctes dans une
colonne en liminant les
valeurs nulles.
Exemple
le nombre de produits dont le libell commence par la lettre P.
SELECT COUNT (*)
FROM Produits
WHERE libelle LIKE P*;
(Institute)
01/11/2011
46 / 100
Regroupements
Group By <Attribut1> , . . . , <Attributp>
Groupe en une seule ligne toutes les lignes pour lesquelles les attributs de
regroupement ont la mme valeur
Restriction sur les regroupements
Having <prdicat> : sert prciser quels groupes doivent tre
slectionns.
Se place aprs la clause Group By
Clause qui permet de grouper les lignes par type.
Exemple : a chage du salaire moyen de chaque catgorie demploys.
SELECT categ, AVG(salaire)
FROM employ
GROUP BY categ;
(Institute)
01/11/2011
47 / 100
(Institute)
01/11/2011
48 / 100
Exemple
1. SELECT DISTINCT model
FROM voiture
GROUP BY model
HAVING COUNT(couleur) > 10
Ici on a che le palmars des models de voitures qui proposent un choix de
plus de 10 couleurs.
2. A chage de tous les clients.
SELECT COUNT(*)
FROM client
(Institute)
01/11/2011
49 / 100
(Institute)
01/11/2011
50 / 100
La gestion utilisateurs
Plusieurs personnes peuvent travailler simultanment sur la mme BD,
mais elles nont pas les mmes besoin. Ladministrateur de la BD dnit
les permissions quil accorde aux utilisateurs :
- accorder des droits : GRANT
- retirer des droits : REVOKE
Le crateur de la table obtient tous les droits
(INSERT,DELETE,UPDATE,: : : )
la liste dutilisateurs peut tre PUBLIC
la liste des permissions peut tre ALL
(Institute)
01/11/2011
51 / 100
(Institute)
01/11/2011
52 / 100
(Institute)
01/11/2011
53 / 100
(Institute)
01/11/2011
54 / 100
Projection
(Institute)
01/11/2011
55 / 100
(Institute)
01/11/2011
56 / 100
Jointure
(Institute)
01/11/2011
56 / 100
Selection
(Institute)
01/11/2011
57 / 100
(Institute)
01/11/2011
58 / 100
(Institute)
01/11/2011
58 / 100
(Institute)
01/11/2011
58 / 100
(Institute)
01/11/2011
58 / 100
(Institute)
01/11/2011
58 / 100
Opration PROJECTION
la projection permet de ne conserver que les attributs (colonnes)
intressants ; cest un dcoupage vertical de la table.
Certains attributs et tous les enregistrements.
La projection : M (R). La projection M (R) produit, partir dune table
R, une sous-table dont les attributs sont dnis dans M.
Formalisme : R = PROJECTION (R1, liste des attributs)
(Institute)
01/11/2011
59 / 100
(Institute)
01/11/2011
60 / 100
(Institute)
01/11/2011
61 / 100
(Institute)
01/11/2011
62 / 100
Exemples :
CHAMPIGNONS
Espce
Ros des prs
Ros des prs
Coulemelle
Ros des prs
(Institute)
Catgorie
Conserve
Sec
Frais
Sec
Conditionnement
Bocal
Verrine
Bote
Sachet plastique
01/11/2011
63 / 100
(Institute)
01/11/2011
64 / 100
(Institute)
01/11/2011
65 / 100
Opration JOINTURE
La jointure (join), est possible seulement sur 2 tables possdant un
domaine commun. La jointure consiste juxtaposer les tuples dont la
valeur dun attribut est identique dans les
deux tables. On constate que souvent, la jointure porte sur des cls
trangre et primaire lies.
SELECT Personnes.nom, nblivres
FROM Personnes, Bibliothque
WHERE Personnes.nom = Bibliothque.nom
qui permet de concatner deux relation en prenant un attribut comme
pivot. Il est possible de concatner deux relation sur plusieurs attributs
la fois, ou mme de concatner X relation sur Y attributs.
Les requtes utilisant trs souvent les jointures, il a t cr une syntaxe
spciale plus rapide : JOIN que la mthode vue plus haut : avec la clause
WHERE.
(Institute)
01/11/2011
66 / 100
(Institute)
01/11/2011
67 / 100
(Institute)
01/11/2011
68 / 100
(Institute)
01/11/2011
69 / 100
Exemple :
SELECT * FROM Produit, Dtail_Commande
WHERE Produit.CodePrd=Dtail_Commande.CodePrd ;
ou en utilisant des alias pour les noms des tables :
SELECT * FROM Produit A, Dtail_Commande B
WHERE A.CodePrd=B.CodePrd ;
Avec la clause JOIN partir du SQL2
SELECT *
FROM table1 JOIN table2 ON table1.attribut1=table2.attribut1 JOIN
table3 ON
table2.attribut2=table3.attribut3... ;
(Institute)
01/11/2011
70 / 100
(Institute)
01/11/2011
71 / 100
Les alias
Il est possible dutiliser des alias (pour simplier) pour nommer une table
diremment dans la requte.
Par exemple :
SELECT F.titre, C.libell-catgorie
FROM FILM F, CATGORIE C
WHERE F.code-catgorie = C.code-catgorie;
(Institute)
01/11/2011
72 / 100
Opration SELECTION
la slection ralise un dcoupage horizontal de la table en ne conservant
que les tuples satisfaisant une condition dnie sur les valeurs dun
attribut.
La slection : F (R ). La slection F (R), o F exprime un prdicat sur
une relation R, permet de ne conserver dans la relation R que les tuples
dont les attributs vrient une condition spcie par F.
Formalisme : R = SELECTION (R1, condition)
(Institute)
01/11/2011
73 / 100
(Institute)
01/11/2011
74 / 100
(Institute)
01/11/2011
75 / 100
(Institute)
01/11/2011
76 / 100
(Institute)
01/11/2011
77 / 100
(Institute)
01/11/2011
78 / 100
Oprations ensemblistes
Le produit cartsien :
SELECT *
FROM NomTable1,NomTable2
WHERE ...
Les deux tables sur lesquelles on travaille doivent avoir le mme schma !
- lunion : UNION (pour conserver les doublons : UNION ALL)
SELECT Nom,Prenom
FROM Table_Employes
UNION
SELECT Nom,Prenom
FROM Table_Clients
- lintersection : INTERSECT
- la dirence ensembliste : MINUS
(Institute)
01/11/2011
79 / 100
Opration UNION
Formalisme : R = UNION (R1, R2)
(Institute)
01/11/2011
80 / 100
Exemple :
E1 : Enseignants lus au CA
N Enseignant nom_enseignant
1
Mohamed
3
Leila
4
Otmane
5
Khalid
(Institute)
01/11/2011
81 / 100
(Institute)
01/11/2011
82 / 100
(Institute)
Nom Enseignant
Mohamed
Leila
Otmane
Khalid
Omar
01/11/2011
83 / 100
(Institute)
01/11/2011
84 / 100
Opration INTERSECTION
Formalisme : R = INTERSECTION (R1, R2)
On dsire connatre les enseignants du CA qui sont des reprsentants
syndicaux.
R2 = INTERSECTION (E1, E2)
N Enseignant Nom Enseignant
1
Mohamed
4
Otmane
(Institute)
01/11/2011
85 / 100
En SQL de base :
SELECT attribut1, attribut2, ... FROM table1
WHERE attribut1 IN (SELECT attribut1 FROM table2) ;
ou avec SQL2 :
SELECT attribut1, attribut2, ... FROM table1
INTERSECT
SELECT attribut1, attribut2, ... FROM table2 ;
Exemple :
SELECT n enseignant, NomEnseignant FROM E1
WHERE n enseignant IN (SELECT n enseignant FROM E2) ;
ou
SELECT n enseignant, NomEnseignant FROM E1
INTERSECT
SELECT n enseignant, NomEnseignant FROM E2 ;
(Institute)
01/11/2011
86 / 100
Opration DIFFERENCE
Formalisme : R = DIFFERENCE (R1, R2)
On dsire obtenir la liste des enseignants du CA qui ne sont pas des
reprsentants syndicaux.
R3 = DIFFERENCE (E1, E2)
N Enseignant Nom Enseignant
3
Leila
5
Khalid
(Institute)
01/11/2011
87 / 100
Opration DIFFERENCE
En SQL de base :
SELECT attribut1, attribut2, ... FROM table1
WHERE attribut1 NOT IN (SELECT attribut1 FROM table2) ;
ou avec SQL2 :
SELECT attribut1, attribut2, ... FROM table1
EXCEPT
SELECT attribut1, attribut2, ... FROM table2 ;
(Institute)
01/11/2011
88 / 100
(Institute)
01/11/2011
89 / 100
(Institute)
01/11/2011
90 / 100
Exemple :
Etudiants
n tudiant nom
101
Mohamed
102
Ali
Epreuves
libell preuve
coe cient
Informatique
3
Mathmatiques
4
Gestion nancire 5
(Institute)
01/11/2011
91 / 100
(Institute)
01/11/2011
92 / 100
(Institute)
01/11/2011
93 / 100
(Institute)
01/11/2011
94 / 100
(Institute)
01/11/2011
95 / 100
(Institute)
01/11/2011
96 / 100
Fonctions de conversion
- ASCII(chaine) : nombre correspondant au code ascii du premier
caractre de chaine ;
- CHR(nombre) : caractre dont nombre est le code ascii ;
- TO_NUMBER(chane) : convertit chane en sa valeur numrique ;
- TO_CHAR(nombre,format) : conversion de nombre chane en fonction
de la chane format :
- 9 reprsente un chire (non reprsent si non signicatif) ;
- 0 reprsente un chire (reprsent mme si non signicatif) ;
- . : point dcimal apparent ;
- V : position du point dcimal non apparent ;
- , : une virgule apparatra cet endroit ;
- $ : un $ prcdera le premier chire signicatif ;
- B : le nombre sera reprsent par des blancs sil vaut 0 ;
(Institute)
01/11/2011
97 / 100
(Institute)
01/11/2011
98 / 100
(Institute)
01/11/2011
99 / 100
(Institute)
01/11/2011
100 / 100