Cours BD
Chapitre IV
Langage de Manipulation de Donn es (LMD)
I. Extraction des donn es
L'instruction SELECT en SQL poss de six clauses diff rentes, dont seules les deux
premi res sont obligatoires. Elles sont donn es ci-dessous, dans l'ordre dans lequel elles
doivent appara tre quand elles sont utilis es
SELECT <attribut(s)> |*
FROM <table(s)>
];
Partie optionnelle
Partie obligatoire
La clause SELECT
L'instruction SELECT en SQL permet d'extraire des donn es d'une base de donn es.
attribut(s): d finit lattribut ou les attributs de la relation r sultat.
DISTINCT : permet d liminer les doublons du r sultat.
La clause FROM : La clause FROM donne la liste des tables participantes
l'interrogation.
Exemple : Soit la table Employe suivante :
Employe (idEmp, nom, prenom, salaire, service, genre, datecontrat)
1. Donner le nom, le pr nom et le salaire des employ s.
SELECT nom, prenom, salaire FROM Employe ;
2. Donner tous les employ s.
SELECT * FROM Employe ; R cup rer toutes les colonnes de tous les enregistrements
3. Donner le nom des diff rents services
SELECT DISTINCT service FROM Employe ; Supprimer les doublons
SELECT DISTINCT service, genre FROM Employe ;
multicolonnes
SELECT DISTINCT
La clause WHERE
La clause SQL WHERE est utilis e pour sp cifier une condition lors de l'extraction des
donn es d'une seule table ou de plusieurs tables associ es.
Syntaxe:
SELECT colonne1, colonne2,..., colonnen
FROM nom_table
WHERE ;
Op rateurs de comparaison
Exemples
4. Donner le pr nom des employ s dont le genre est masculin.
SELECT prenom
FROM Employe
WHERE genre=M ;
1
Cours BD
Chapitre IV
5. Donner le pr nom des employ s dont le salaire est sup rieur 2000DT.
SELECT prenom
FROM Employe
WHERE salaire>20000 ;
6. Donner lidentifiant et le pr nom des employ s dont leur date de contrat inf rieure ou
gale 2012-10-13.
Advertisement
SELECT idEmp, prenom
FROM Employe
WHERE datecontrat<=2012-10-13;
Comparaisons NULL
La valeur NULL nest pas comparable, on ne peut pas la mettre directement apr s les signes =
et !=.
Exemples
7. Donner lidentifiant et le pr nom des employ s qui ne sont affect s aucun service.
SELECT idEmp, prenom
FROM Employe
WHERE service IS NULL;
Clause BETEWEEN &.AND
8. Donner le nom des employ s dont le salaire est compris entre 1200 et 3500.
SELECT nom
FROM Employe
WHERE salaire BETWEEN 1200 AND 3500 ;
Clause IN
9. Donner le nom des employ s dont le salaire est gal 1200 ou gal 5000 (pas entre
les deux).
SELECT nom
FROM Employe
WHERE salaire IN (1200, 5000) ;
10. Donner le pr nom des employ s dont le service est marketing ou informatique (pas les
deux).
SELECT prenom
FROM Employe
WHERE service IN (marketing, informatique) ;
Op rateur de comparaison LIKE
Le pr dicat LIKE permet de faire des comparaisons sur des cha nes gr ce des caract res
appel s caract res jokers.
Deux types de caract res g n riques sont utilis s pour filtrer les r sultats :
% : Utilis pour faire correspondre z ro, un ou plusieurs caract res. (Longueur
variable)
_ : Utilis pour correspondre exactement un caract re. (Longueur fixe)
Exemples :
11. Donner le pr nom des employ s dont le nom commence par la lettre D.
SELECT prenom
FROM Employe
WHERE nom LIKE D%;
12. Donner le pr nom des employ s dont le nom contient la lettre E.
SELECT prenom
2
Cours BD
Chapitre IV
FROM Employe
WHERE nom LIKE %E%;
13. Donner le pr nom des employ s dont le nom contient la lettre m en avant derni re
position.
SELECT * FROM Employes WHERE Nom LIKE "%m_";
Op rateurs logiques, arithm tiques et concatenation
14. Donner le nom et le pr nom des employ s hommes et dont le salaire est sup rieur
1200.
Advertisement
SELECT nom,prenom
FROM Employe
WHERE genre=M AND salaire>12000;
15. Donner le nom et le pr nom des employ s hommes ou dont le salaire est sup rieur
1200.
SELECT nom,prenom
FROM Employe
WHERE genre=M OR salaire>12000;
16. Donner lidentifiant des employ s qui sont affect s des services.
SELECT idEmp
FROM Employe
WHERE service IS NOT NULL;
17. Donner les identifiants des employ s dont le salaire annuel est sup rieur 12000.
SELECT idEmp
FROM Employe
WHERE salaire*12>12000;
18. Donner le nom complet des employ s
SELECT CONCAT(nom, ,prenom) AS NomComplet
FROM Employe ; fonction relative MySql
Clause ORDER BY
Linstruction ORDER BY dans SQL est utilis e pour trier les donn es extraites par ordre
croissant ou d croissant selon une ou plusieurs colonnes.
Par d faut, ORDER BY trie les donn es par ordre croissant.
On utilise le mot-cl DESC pour trier les donn es par ordre d croissant et le
mot-cl ASC pour trier par ordre croissant.
Syntaxe:
SELECT liste-colonnes
FROM nom_table
;
19. Donner le nom et le pr nom des employ s par anciennet
SELECT nom,prenom
FROM Employe
ORDER BY datecontrat ASC;
II. Fonctions dagr gation
La fonction d'agr gation SQL est utilis e pour effectuer les calculs sur plusieurs lignes d'une
seule colonne d'une table. Elle retourne une valeur unique.
La norme ISO d finit cinq fonctions d'agr gation : COUNT( ), SUM( ), AVG( ), MIN( ) et
MAX( ).
3
Cours BD
Chapitre IV
COUNT( )
La fonction COUNT est utilis e pour compter le nombre de lignes dans une table de base de
donn es.
La fonction COUNT utilise COUNT(*) qui renvoie le nombre de toutes les lignes d'une table
sp cifi e. COUNT(*) consid re les doublons et Null.
Exemples:
20. Donner le nombre de services. la valeur NULL nest pas comptabilis e
SELECT COUNT(DISTINCT service) AS NbreService
FROM Employe;
21. Donner le nombre des employ s.
Advertisement
SELECT COUNT(*) AS NbreEmploye
FROM Employe;
SUM( )
La fonction SUM renvoie la somme de toutes les valeurs de la colonne sp cifi e.
Exemple :
22. Donner la somme des salaires des employ s
SELECT SUM(salaire)
FROM Employe ;
MIN( )
La fonction MIN est utilis e pour d terminer la plus petite valeur de toutes les valeurs
s lectionn es d'une colonne.
Exemple :
23. Donner le plus faible salaire.
SELECT MIN(salaire)
FROM Employe ;
MAX( )
La fonction MAX renvoie la plus grande valeur de toutes les valeurs s lectionn es d'une
colonne.
Exemple :
24. Donner le salaire le plus lev .
SELECT MAX(salaire)
FROM Employe ;
III. Groupement : GROUP BY-HAVING
GROUP BY
La clause GROUP BY en SQL permet dorganiser des donn es identiques en groupes laide
de certaines fonctions. C'est- -dire si une colonne particuli re a les m mes valeurs dans
diff rentes lignes, elle organisera ces lignes dans un groupe.
Syntaxe :
SELECT colonne1, colonne2, ... colonneN, fonction_agregation (nom_colonne)
FROM tables
GROUP BY colonne1, colonne2, ... colonneN;
Remarque :
4
Cours BD
Chapitre IV
colonne1, colonne2,...colonneN sp cifie les colonnes(ou expressions) qui ne sont pas
encapsul es dans une fonction d'agr gation et doivent tre incluses dans la clause GROUP
BY.
Exemple :
25. Donner le nombre demploy s appartenant chaque service.
SELECT service, COUNT(*) AS NbreEmploye
FROM Employe
GROUP BY service ;
le GROUP BY porte sur une colonne s lectionn e
HAVING
On utilise la clause HAVING pour poser des conditions afin de d cider quel groupe fera
partie de l'ensemble des r sultats finaux.
Syntaxe :
SELECT colonne1, colonne2, ... colonneN,
fonction_agregation (nom_colonne)
FROM tables
Advertisement
GROUP BY colonne1[, colonne2, ... colonneN]
HAVING condition ;
Exemple :
26. Donner les services dont la moyenne des salaires est sup rieure 15000
SELECT service, AVG(salaire) Moyenne
FROM Employe Requ te erron e
WHERE AVG(salaire)>15000
GROUP BY service
WHERE est un filtrage en entr e avant tout autre calcul, la fonction dagr gation
AVG( ) nest pas encore calcul e : pas de fonction dagr gation dans un WHERE
Solution : utiliser un filtrage en sortie : HAVING
SELECT service, AVG(salaire) Moyenne
FROM Employe
GROUP BY service
HAVING Moyenne>15000 ;
IV. Jointures
Les jointures permettent dextraire des donn es issues de plusieurs tables. La jointure est
utilis e pour combiner des colonnes de deux tables ou plus en utilisant des valeurs communes
aux deux tables.
G n ralement, la comparaison fait intervenir une cl trang re dune table avec une cl
primaire dune autre table. Plusieurs types de jointures sont d finis selon la nature de la
condition de s lection.
Exemples :
Soient les deux tables suivantes :
Employe (idEmp, nomEmp, prenomEmp, salaire, genre, datecontrat, #idDirec, #idServ )
Service (idServ, nomServ)
27. Donner le nom et le pr nom des employ s avec pour chacun d'eux, le nom de son
service.
SELECT employe.nomEmp, employe.prenomEmp, service.nomServ
FROM employe, service
5
Cours BD
Chapitre IV
WHERE employe.idServ = service.idServ; condition de jointure
28. Donner pour chaque service, son nom ainsi que le nombre demploy s quil contient.
SELECT Employe.idServ, nomServ, count(idEmp) NbreEmploye
FROM Employe, Service
WHERE Employe. idServ =Service.idServ
GROUP BY Employ.idServ ;
29. Donner le nom et le pr nom des employ s ainsi que le nom et le pr nom de leur
directeur correspondant.
SELECT CONCAT(e1.nomEmp,' ', e1.prenomEmp) emp, CONCAT(e2.nom,' ', e2.prenom)
dir
FROM employe e1, employe e2 e1 et e2 sont des alias de tables
WHERE e1.idDirec = e2.idEmp; jointure r flexive
6