Cours BD - Chapitre IV: Langage de Manipulation de Données (LMD)

Page 1 sur 6Lecteur de document UniversityLib

Cours BD - Chapitre IV: Langage de Manipulation de Données (LMD)

Databases and SQL · course

Browse all bases de données documents

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