Вы находитесь на странице: 1из 108

Le langage SQL (Structured Query Language)

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

Langage de dnition de donnes

Le langage de dnition de donnes (LDD, ou Data Denition Language,


soit DDL en anglais) est un langage orient au niveau de la structure de la
base de donnes. Le LDD permet de crer, modier, supprimer des objets.
Il permet galement de dnir le domaine des donnes (nombre, chane de
caractres, date, boolen, . . .) et dajouter des contraintes de valeur sur
les donnes. Il permet enn dautoriser ou dinterdire laccs aux donnes
et dactiver ou de dsactiver laudit pour un utilisateur donn.
Les instructions du LDD sont : CREATE, ALTER, DROP, AUDIT,
NOAUDIT, ANALYZE, RENAME, TRUNCATE.

(Institute)

01/11/2011

3 / 100

Langage de manipulation de donnes

Le langage de manipulation de donnes (LMD, ou Data Manipulation


Language, soit DML en anglais) est lensemble des commandes concernant
la manipulation des donnes dans une base de donnes. Le LMD permet
lajout, la suppression et la modication de lignes, la visualisation du
contenu des tables et leur verrouillage.
Les instructions du LMD sont : INSERT, UPDATE, DELETE, SELECT,
EXPLAIN, PLAN, LOCK TABLE.

(Institute)

01/11/2011

4 / 100

Langage de protections daccs

Le langage de protections daccs (ou Data Control Language, soit DCL


en anglais) soccupe de grer les droits daccs aux tables.
Les instructions du DCL sont : GRANT, REVOKE.

(Institute)

01/11/2011

5 / 100

Langage de contrle de transaction

Le langage de contrle de transaction (ou Transaction Control Language,


soit TCL en anglais) gre les modications faites par le LMD, cest--dire
les caractristiques des transactions et la validation et lannulation des
modications.
Les instructions du TCL sont : COMMIT, SAVEPOINT, ROLLBACK,
SET TRANSACTION

(Institute)

01/11/2011

6 / 100

SQL intgr

Le SQL intgr (Embedded SQL) permet dutiliser SQL dans un langage


de troisime gnration (C, Java, etc.) :
dclaration dobjets ou dinstructions ;
excution dinstructions ;
gestion des variables et des curseurs ;
traitement des erreurs.
Les instructions du SQL intgr sont : DECLARE, TYPE, DESCRIBE,
VAR, CONNECT, PREPARE, EXECUTE, OPEN, FETCH, CLOSE,
WHENEVER.

(Institute)

01/11/2011

7 / 100

SQL inclut des oprations permettant de rduire le nombre de donnes


manipules verticalement et/ou horizontalement. La projection permet la
rduction verticale par diminution du nombre dattributs manipuls. La
slection permet la rduction horizontale par diminution du nombre de
n-uplets manipuls. La projection et la slection sont deux lments
essentiels pour loptimisation de lexcution des requtes.
Le langage SQL se dcline sous la forme de deux sous-ensembles : le
langage de dnition de donnes ou LDD et le langage de manipulation de
donnes ou LMD.
Le LDD permet de dnir et de manipuler les relations au sein de la base
de donnes.
Le LMD permet daccder, dinsrer, modier et de supprimer des donnes
dans la base.

(Institute)

01/11/2011

8 / 100

Le Langage de Dnition de Donnes : manipulation des relations


Les attributs
Chaque domaine identi par un attribut possde un type. Quatre types
sont principalement utiliss :
char(n) : chane de caractres de longueur xe n.
Par exemple : le code postal est cod sur 5 caractres, un numro de
tlphone est compos de 10 chires.
varchar2(n) : chane de caractres de longueur variable dau maximum n ;
number(n, m) : numrique n chires dont m dcimales ;
date : reprsente les dates et les heures.
Le systme Oracle ore dautres types. En particulier, il ore des types
permettant de stocker des donnes binaires (images, textes utilisant des
caractres nationaux, ...).

(Institute)

01/11/2011

9 / 100

Cration dune relation


Pour crer une relation, il existe une seule instruction :
create table Nom_Relation (
nom_attribut_1 type1 [default valeur1],
nom_attribut_2 type2 [default valeur2],
...) ;

(Institute)

01/11/2011

10 / 100

Exemple : crer une relation Personne . Une personne est caractrise


par son nom, son prnom, son adresse, sa date de naissance et son code
postal.
create table Personne (
nom varchar2(20),
prenom varchar2(20),
adresse varchar2(100),
code_postal char(5),
date_naissance date);

(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

Les contraintes dintgrit


1

pour nommer une contrainte : CONSTRAINT

dnir une valeur par dfaut : DEFAULT

prciser que la saisie est obligatoire : NOT NULL

vrier quune valeur saisie pour un champ nexiste pas dj dans la


table : UNIQUE

test sur un champ : CHECK (CHECK (condition) : quivaut la


proprit "ValideSi")

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

Dnition des cls


cl primaire : PRIMARY KEY
PRIMARY KEY (colonne1, colonne2, ...)
cl trangre : FOREIGN KEY...REFERENCES...
FOREIGN KEY (colonne1, colonne2, ...)
REFERENCES NomTableEtrangere(colonne1,colonne2,...)

(Institute)

01/11/2011

14 / 100

suppression dlments : DROP (VIEW, INDEX, TABLE)


DROP TABLE NomTable
(supprime les donnes et la structure de la table)
Isuppression de donnes uniquement : TRUNCATE
TRUNCATE TABLE NomTable
Irenommer une table : RENAME
RENAME TABLE AncienNom TO NouveauNom

(Institute)

01/11/2011

15 / 100

Modication dune relation


La cration dune relation par CREATE TABLE nen rend pas dnitives
les spcications. Il est possible den modier la dnition par la suite,
tout moment
par la commande ALTER TABLE.
- ajouter/supprimer un attribut
- crer/supprimer une cl primaire
- ajouter une contrainte dunicit (interdire les doublons)
- changer la valeur par dfaut dun attribut
- changer totalement la dnition dun attribut
- changer le nom de la relation
- ajouter/supprimer un index

(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

Exemple : ajouter la relation Voiture lattribut prop contenant


le nom du propritaire de la voiture
alter table Voiture add ( prop varchar2(20)) ;
Exemple : modier lattribut code_postal de la relation Personne
pour que par dfaut la valeur du code postal soit 31000.
alter table Personne modify (code_postal char(5) default 3100);
Destruction dune relation
La commande permettant de dtruire une relation est :
drop table nom_relation
Supprimer un attribut
Syntaxe :
ALTER TABLE relation DROP attribut
Exemple :
ALTER TABLE Personnes DROP prnom

(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

Modication des contraintes

ajouter de nouvelles contraintes


ALTER TABLE NomTable
ADD CONSTRAINT NomContrainte
supprimer des contraintes
ALTER TABLE NomTable
DROP CONSTRAINT NomContrainte
activer ou dsactiver toutes les contraintes
ALTER TABLE NomTable
CHECK CONSTRAINT NomContrainte
ALTER TABLE NomTable
NOCHECK CONSTRAINT ALL

(Institute)

01/11/2011

22 / 100

Crer une cl primaire


La cration dune cl primaire nest possible quen labsence de cl
primaire dans la relation.
Syntaxe :
ALTER TABLE relation ADD PRIMARY KEY (attribut)
Exemple :
ALTER TABLE Personnes ADD PRIMARY KEY (nom,prnom)

(Institute)

01/11/2011

23 / 100

Supprimer une cl primaire


Comme une cl primaire est unique, il ny a aucune ambigut lors de la
suppression.
Syntaxe :
ALTER TABLE relation DROP PRIMARY KEY
Exemple :
ALTER TABLE Personnes ADD PRIMARY KEY

(Institute)

01/11/2011

24 / 100

Ajout dune contrainte dunicit


Il est possible (facultatif) de donner un nom la contrainte. Cette
contrainte peut sappliquer plusieurs attributs.
Si les valeurs dj prsentes dans la relation sont en contradiction avec
cette nouvelle contrainte, alors cette dernire ne sera pas applique et une
erreur sera gnre.
Syntaxe :
ALTER TABLE relation ADD UNIQUE [contrainte] (attributs)
Exemple pour interdire tout doublon sur lattribut fax de la relation
Personnes :
ALTER TABLE Personnes ADD UNIQUE u_fax (fax)

(Institute)

01/11/2011

25 / 100

Changer la valeur par dfaut dun attribut


Pour changer ou supprimer la valeur par dfaut dun attribut.
Attention aux types qui nacceptent pas de valeur par dfaut (les familles
BLOB et TEXT).
Syntaxe :
ALTER TABLE relation ALTER attribut { SET DEFAULT valeur
jDROP DEFAULT }
Changer sa valeur par dfaut :
ALTER TABLE Personnes ALTER tlphoneSET DEFAULT
9999999999
Supprimer sa valeur par dfaut :
ALTER TABLE Personnes ALTER tlphoneDROP DEFAULT
Le changement ou la suppression naecte en rien les enregistrements qui
ont eu recours cette valeur lors de leur insertion.

(Institute)

01/11/2011

26 / 100

Changer la dnition dun attribut


Pour changer la dnition de lattribut sans le renommer :
ALTER TABLE relation MODIFY attribut denition_relative
Exemple 1 :
ALTER TABLE Personnes MODIFY fax VARCHAR(14)
Pour changer sa dnition en le renommant :
ALTER TABLE relation CHANGE attribut denition_absolue
Exemple 2 :
ALTER TABLE Personnes CHANGE fax num_fax VARCHAR(14)
Attention, si le nouveau type appliqu lattribut est incompatible avec les
valeurs des enregistrements dj prsents dans la relation, alors elles risques

(Institute)

01/11/2011

27 / 100

Changer le nom de la relation


Syntaxe :
ALTER TABLE relation RENAME nouveau_nom
Exemple :
ALTER TABLE Personnes RENAME Carnet
Cela consiste renommer la table, et donc le chier qui la stocke.

(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

La syntaxe pour dnir une vue est la suivante :


CREATE VIEW NomVue(NomColonne1,...)
AS SELECT NomColonne1,..
FROM NomTable
WHERE Condition
Exemple :
CREATE VIEW EtudiantsSrc(Nom,Prenom)
AS SELECT Nom,Prenom
FROM Etudiants
WHERE n_formation=12

(Institute)

01/11/2011

31 / 100

Le Langage de Manipulation de Donnes : manipulation des


donnes
Insertion de donnes
Ajouter un enregistrement une relation revient ajouter une ligne la
table. Pour cela, pour chacun des attributs, il faudra en prciser la valeur.
Si certaines valeurs sont omises, alors les valeurs par dfauts dnie les de
la cration de la relation seront utilises.
Linsertion de donnes se fait par linstruction :
insert into nom_relation (nom_att1, nom_att2, ... , nom_attn)
values
(val_att1, val_att2, ..., val_attn) ;
Le nom des attributs est optionnel si on fournit une valeur chaque
attribut de la relation nom_relation .

(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

Slectionner des enregistrements


Pour extraire de votre base de donnes des informations, comme la liste
des personnes de votre carnet dadresse qui vivent Rabat.
Syntaxe gnrale :
SELECT [ DISTINCT ] attributs
[ INTO OUTFILE chier ]
[ FROM relation ]
[ WHERE condition ]
[ GROUP BY attributs ]
[ HAVING condition ]
[ ORDER BY attributs [ ASC j DESC ]]
[ LIMIT [a,] b ]
Exemple :
SELECT nom,prnom FROM Personnes WHERE adresse LIKE %Rabat%

(Institute)

01/11/2011

38 / 100

(Institute)

01/11/2011

39 / 100

Les conditions peuvent faire appel aux oprateurs suivants :


oprateurs logiques : AND, OR, NOT
comparateurs de chanes : IN, BETWEEN, LIKE
oprateurs arithmtiques : +;-; /;%
comparateurs arithmtiques : =; ; <; >; <= ;>=;<>

(Institute)

01/11/2011

40 / 100

Restriction sur une comparaison de chanes


Le prdicat LIKE permet de faire des restrictions sur des chanes
le caractre % remplace une squence (ventuellement vide) de caractres
le caractre _ remplace un caractre
les caractres [] dnissent un intervalle de caractres (par exemple[A
E])
Exemple :
SELECT *
FROM Vehicules
WHERE Marque LIKE "_e%"

(Institute)

01/11/2011

41 / 100

Restriction sur un ensemble


Les prdicats BETWEEN et IN vrient
quune valeur se trouve dans un intervalle
Exemple
SELECT *
FROM Vehicules
WHERE Compteur BETWEEN 10000 AND 30000
SELECT *
FROM Vehicules
WHERE Marque IN ("Peugeot","Nissan")

(Institute)

01/11/2011

42 / 100

Restriction sur un ensemble


Les prdicats BETWEEN et IN vrient
quune valeur se trouve dans un intervalle
quune valeur appartient une liste de valeurs
Exemple
SELECT *
FROM Vehicules
WHERE Compteur BETWEEN 10000 AND 30000
SELECT *
FROM Vehicules
WHERE Marque IN ("Peugeot","Nissan")

(Institute)

01/11/2011

42 / 100

Procdons par tapes :


Pour slectionner tous les enregistrements dune relation :
SELECT * FROM relation
Pour slectionner toutes les valeurs dun seul attribut :
SELECT attribut FROM relation
Pour liminer les doublons :
SELECT DISTINCT attribut FROM relation
Pour trier les valeurs en ordre croissant :
SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC
Pour se limiter aux num premiers rsultats :
SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC
LIMIT num
Pour ne slectionner que ceux qui satisfont une condition :
SELECT DISTINCT attribut FROM relation WHERE condition
ORDER BY attribut ASC LIMIT num

(Institute)

01/11/2011

43 / 100

EXISTS / NOT EXISTS


SELECT. . .
WHERE [NOT] EXISTS (sous_requte);
EXISTS : La sous-requte devra retourner au moins une valeur pour que la
condition soit vraie.
NOT EXISTS : La sous-requte ne devra retourner aucune valeur pour que
la condition soit vraie.
Exemple : on veut la liste des classes pour lesquelles il ny a personne de
coll.
SELECT DISTINCT classe
FROM lve
WHERE NOT EXISTS (SELECT *
FROM colles
WHERE lve.classe = colle.classe);

(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

Fonctions utiliser dans les GROUP BY


MIN(x), MAX(x), AVG(x), SUM(x)
Calculent respectivement le minimum, le maximum, la moyenne et la
somme des valeurs de lattribut X.
COUNT([DISTINCT]x,y,. . . )
Dcompte des tuples du rsultat par projection sur le ou les attributs
spcis (ou tous avec *). Loption DISTINCT limine les doublons.

(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

3. Classement des produits par la valeur totale vendue


SELECT DISTINCT produit.nom, SUM(vente.qt * produit.prix) AS total
FROM produit, vente
WHERE produit.id = vente.produit_idx
GROUP BY produit.nom
ORDER BY total
4. la liste des vendeurs, avec pour chaque vendeur le nombre de ventes
quil a fait :
SELECT num_vendeur,COUNT (*)
FROM Commandes
GROUP BY num_vendeur;
.

(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

Accorder des droits

accorder des droits : GRANT...ON...TO...


utilisateur ayant des droits peut accorder ces mmes droits dautres
utilisateurs : WITH GRANT OPTION (donc plusieurs
utilisateurs peuvent accorder des droits au mme utilisateur...)
Exemple :
GRANT UPDATE(Nom,Prenom)
ON Etudiants
TO Mohamed,Omar,Ali
WITH GRANT OPTION;

(Institute)

01/11/2011

52 / 100

Retirer des droits

retirer des droits : REVOKE...ON...FROM...


supprimer le droit dun utilisateur accorder des permissions un autre
utilisateur : GRANT OPTION FOR
REVOKE
[GRANT OPTION FOR] ListePermissions
ON ListeObjets
FROM ListeUtilisateurs;

(Institute)

01/11/2011

53 / 100

Lalgbre relationnelle regroupe toutes les oprations possibles sur les


relations. Voici la liste des oprations possibles :
Projection : on ne slectionne quun ou plusieurs attributs dune relation
(on ignore les autres). Par exemple na cher que les colonnes nom et
prnom de la table Personnes.
Jointure : on fabrique une nouvelle relation partir de 2 ou plusieurs
autres en prenant comme pivot 1 ou plusieurs attributs. Par exemple, on
concatne la table du carnet dadresse et celle des inscrits la bibliothque
en fonction du nom de famille (ces typiquement du recoupement de
chiers).
Slection : on slectionne tous les tuples ou bien seulement une partie en
fonction de critres de slection qui portent sur les valeurs des attributs.
Par exemple na cher que les lignes de la table Personnes qui vrient la
condition suivante : le nom ne commence pas par la lettre C.

(Institute)

01/11/2011

54 / 100

Projection

(Institute)

01/11/2011

55 / 100

Exemple du carnet dadresse :


CREATE TABLE Personne (
nom VARCHAR(40),
prnomVARCHAR(40),
adresse TINYTEXT,
tlphoneDECIMAL(10,0)
)
Notre carnet dadresse est stock dans un tableau (appel Relation) de
nom Personne qui comporte les colonnes (dites aussi attributs) suivantes :
nom (chane de 40 caractres maximum), prnom (idem), adresse (texte
de longueur variable mais infrieure 255 caractres) et tlphone (chane
de 10 caractres). Chacune des personnes ajouter au carnet dadresse
occupera une ligne de cette table. Une ligne est dite enregistrement dans
le jargon des bases de donnes.

(Institute)

01/11/2011

56 / 100

Jointure

(Institute)

01/11/2011

56 / 100

Selection

(Institute)

01/11/2011

57 / 100

Les 5 oprations fondamentales sont les suivantes :


Lunion, qui rajoute des lignes.

(Institute)

01/11/2011

58 / 100

Les 5 oprations fondamentales sont les suivantes :


Lunion, qui rajoute des lignes.
Le produit cartsien, qui rajoute des colonnes et des lignes

(Institute)

01/11/2011

58 / 100

Les 5 oprations fondamentales sont les suivantes :


Lunion, qui rajoute des lignes.
Le produit cartsien, qui rajoute des colonnes et des lignes
La dirence, qui enlve des lignes.

(Institute)

01/11/2011

58 / 100

Les 5 oprations fondamentales sont les suivantes :


Lunion, qui rajoute des lignes.
Le produit cartsien, qui rajoute des colonnes et des lignes
La dirence, qui enlve des lignes.
La slection, qui enlve des lignes.

(Institute)

01/11/2011

58 / 100

Les 5 oprations fondamentales sont les suivantes :


Lunion, qui rajoute des lignes.
Le produit cartsien, qui rajoute des colonnes et des lignes
La dirence, qui enlve des lignes.
La slection, qui enlve des lignes.
La projection, qui enlve des colonnes.

(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

Soit la relation Employ:

(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

R1 = PROJECTION (CHAMPIGNONS, Espce)


Espce
Ros des prs
Coulemelle
R2 = PROJECTION (CHAMPIGNONS, Espce, Catgorie)
Espce
Catgorie
Ross des prs
Conserve
Ros des prs
Sec
Coulemelle
Frais

(Institute)

01/11/2011

64 / 100

SELECT DISTINCT liste dattributs FROM table ;


SELECT liste dattributs FROM table ;
Exemples :
SELECT DISTINCT Espce FROM Champignons ;
SELECT DISTINCT Espce, Catgorie FROM Champignons ;
La clause DISTINCT permet dliminer les doublons.

(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

Ainsi la jointure prcdente peut scrire aussi :


SELECT Personnes.nom, nblivres
FROM Personnes INNER JOIN Bibliothque
USING (nom)
ce qui signie que les deux relations Personnes et Bibliothque sont
concatne (INNER JOIN) en utilisant (USING) lattribut nom.

(Institute)

01/11/2011

67 / 100

Formalisme : R = JOINTURE (R1, R2, condition dgalit entre attributs)

R = JOINTURE (PRODUIT, DETAIL_COMMANDE,


Produit.CodePrd=Dtail_Commande.CodePrd)

(Institute)

01/11/2011

68 / 100

En SQL, il est possible denchaner plusieurs jointures dans la mme


instruction SELECT.
En SQL de base :
SELECT * FROM table1, table2, table3, ...
WHERE table1.attribut1=table2.attribut1 AND
table2.attribut2=table3.attribut2 AND ...;

(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

Soit la relation Employ:

(Institute)

01/11/2011

74 / 100

(Institute)

01/11/2011

75 / 100

(Institute)

01/11/2011

76 / 100

(Institute)

01/11/2011

77 / 100

R3 = SELECTION (CHAMPIGNONS, Catgorie = "Sec")


Espce
Catgorie
Conditionnement
Ros des prs
Sec
Verrine
Ros des prs
Sec
Sachet plastique
Il permet de ne retenir que les n-uplets rpondant une condition
exprime laide des oprateurs arithmtiques ( =, >, <, >=, <=, <>)
ou logiques de base (ET, OU, NON). .

(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

E2 : Enseignants reprsentants syndicaux


N Enseignant nom_enseignant
1
Mohamed
4
Otmane
6
Omar

(Institute)

01/11/2011

82 / 100

On dsire obtenir lensemble des enseignants lus au CA ou reprsentants


syndicaux.
R1 = UNION (E1, E2)
N Enseignant
1
3
4
5
6

(Institute)

Nom Enseignant
Mohamed
Leila
Otmane
Khalid
Omar

01/11/2011

83 / 100

SELECT liste dattributs FROM table1


UNION
SELECT liste dattributs FROM table 2 ;
Exemple :
SELECT n enseignant, NomEnseignant FROM E1
UNION
SELECT n enseignant, NomEnseignant FROM E2 ;

(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

Opration PRODUIT CARTESIEN


le produit cartsien ralise la juxtaposition ou concatnation de tous les
tuples dune table avec tous les tuples dune autre table. Si les 2 tables
ont M et N tuples le rsultat aura M * N
tuples.
Formalisme : R = PRODUIT (R1, R2)

(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

Examen = PRODUIT (Etudiants, Epreuves)


n tudiant nom
libell preuve
coe cient
101
Mohamed Informatique
3
101
Mohamed Mathmatiques
4
101
Mohamed Gestion nancire 5
102
Ali
Informatique
3
102
Ali
Mathmatiques
4
102
Ali
Gestion nancire 5
La relation rsultat possde les attributs de chacune des relations dorigine
et ses nuplets sont forms par la concatnation de chaque n-uplet de la
premire relation
avec lensemble des n-uplets de la deuxime.

(Institute)

01/11/2011

92 / 100

Oprateur et fonctions de chanes


- Oprateur de concatnation : jj
- chane CONCAT(chane1,chane2) : concatnation ;
- chane SUBSTR(chane,m[,n]) : partie commenant au caractre m et
ayant une longueur de n ;
- chane INITCAP(chane) : premire lettre de chaque mot en majuscule et
toutes les autres en minuscule ;
- chane LOWER(chane), UPPER(chane) : toutes lettres en minuscules,
majuscules ;
- chane LPAD(chane,long,[char]), RPAD(chane,n,[char]) : complte ou
tronque chane pour quelle ait comme longueur long en ajoutant
ventuellement gauche (droite) le caractre (ou la chane de caractres)
char (par dfaut, un espace) ;

(Institute)

01/11/2011

93 / 100

- chane LTRIM(chane[,ens]), RTRIM(chane[,ens]) : supprime de chane


tous les caractres qui sont dans ens gauche ( droite). Arrt : premier
caractre qui nest pas dans ens (par dfaut, ens = espace) ;
- chane REPLACE(chaine, avant, apres) : remplacements ;
- chane TRANSLATE(chane, avant, apres) : remplace chaque caractre
de chane prsent dans avant par le caractre situ la mme position
dans apres. Si avant contient plus de caractres que apres, suppression des
caractres correspondants ;
- int INSTR(chane, sous-chane, debut, occ) : position du premier
caractre de chane correspondant loccurence occ de sous-chane en
commenant la recherche la position dbut ;
- int LENGTH(chane) : longueur de chane ;

(Institute)

01/11/2011

94 / 100

Oprateurs et fonctions sur les dates


Oprateurs de date :
- date +/- nombre : est une date obtenue en ajoutant le nombre de jours
nombre la date date ;
- date2 - date1 : est le nombre de jours entre les deux dates ;
Fonctions de dates :
- SYSDATE : date et lheure courantes du systme dexploitation hte ;
- DATE NEXT_DAY(date, nom_du_jour) : date du prochain jour de la
semaine dont le nom est nom_de_jour ;
- DATE LAST_DAY(d) : date du dernier jour du mois de d ;
- DATE ADD_MONTHS(d, n) : ajoute n mois date. Si le mois obtenu
a moins de jours que le jour de d, le jour obtenu est le dernier du mois.

(Institute)

01/11/2011

95 / 100

- number MONTHS_BETWEEN(date2, date1) : nombre de mois entre


date2 et date1, si date2 est aprs date1 le rsultat est positif, sinon le
rsultat est ngatif. Si les jours date2 et date1 sont les mmes, ou si ce
sont les derniers jours du mois, le rsultat est un entier. La partie
fractionnaire est calcule en considrant chaque jour comme 1/31me de
mois
- DATE ROUND(date[,prcision]) : d arrondie lunit spcie dans
prcision. Lunit de prcision est indique en utilisant un des masques de
mise en forme de la date. On peut ainsi arrondir une date lanne, au
mois, la minute,... Par dfaut la prcision est le jour ;
- DATE TRUNC(d[,prcision]) : d tronque lunit spcie dans
prcision. Les paramtres sont analogues ceux de la fonction ROUND.

(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

Syntaxe gnrale de la commande SELECT


Voici la syntaxe gnrale dune commande SELECT :
SELECT [ ALL j DISTINCT ] { * j expression [ AS nom_a ch ] }
[, ...]
FROM nom_table [ [ AS ] alias ] [, ...]
[ WHERE prdicat ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ {UNION j INTERSECT j EXCEPT [ALL]} requte ]
[ ORDER BY expression [ ASC j DESC ] [, ...] ]

(Institute)

01/11/2011

98 / 100

En fait lordre SQL SELECT est compos de 7 clauses dont 5 sont


optionnelles :
SELECT : Cette clause permet de spcier les attributs que lon dsire voir
apparatre dans le rsultat de la requte.
FROM : Cette clause spcie les tables sur lesquelles porte la requte.
WHERE : Cette clause permet de ltrer les n-uplets en imposant une
condition remplir pour quils soient prsents dans le rsultat de la
requte.
GROUP BY : Cette clause permet de dnir des groupes.
HAVING : Cette clause permet de spcier un ltre (condition de
regroupement des n-uplets) portant sur les rsultats.
UNION, INTERSECT et EXCEPT : Cette clause permet deectuer des
oprations ensemblistes entre plusieurs rsultats de requte (i.e. entre
plusieurs SELECT).
ORDER BY : Cette clause permet de trier les n-uplets du rsultat.

(Institute)

01/11/2011

99 / 100

Loprateur toile (*)


Le caractre toile (*) permet de rcuprer automatiquement tous les
attributs de la table gnre par
la clause FROM de la requte.
Pour a cher la table employee on peut utiliser la requte :
SELECT * FROM employee

(Institute)

01/11/2011

100 / 100

Оценить