Vous êtes sur la page 1sur 6

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 [DISTINCT] <attribut(s)> |*
Partie obligatoire
FROM <table(s)>
[WHERE <condition>
[GROUP BY <attribut(s) de regroupement>
Partie optionnelle
[HAVING <condition >]
[ORDER BY <attribute(s)>[ASC|DESC]];
 La clause – SELECT
L'instruction SELECT en SQL permet d'extraire des données d'une base de données.
attribut(s): définit l’attribut 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 ;  SELECT DISTINCT
multicolonnes
 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 [condition] ;
 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 l’identifiant et le prénom des employés dont leur date de contrat inférieure ou
égale à 2012-10-13.
SELECT idEmp, prenom
FROM Employe
WHERE datecontrat<=’2012-10-13’;
 Comparaisons à NULL
La valeur NULL n’est pas comparable, on ne peut pas la mettre directement après les signes =
et !=.
Exemples
7. Donner l’identifiant 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.
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 l’identifiant 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
L’instruction 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
[WHERE condition]
[ORDER BY colonne1, colonne2, .. ] [ASC | DESC];
19. Donner le nom et le prénom des employés par ancienneté
SELECT nom,prenom
FROM Employe
ORDER BY datecontrat ASC;
II. Fonctions d’agré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 n’est pas comptabilisée
SELECT COUNT(DISTINCT service) AS NbreService
FROM Employe;
21. Donner le nombre des employés.
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 d’organiser des données identiques en groupes à l’aide
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
[WHERE conditions]
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 d’employé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
[WHERE conditions]
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 d’agrégation
AVG( ) n’est pas encore calculée : pas de fonction d’agré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 d’extraire 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 d’une table avec une clé
primaire d’une 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 d’employés qu’il 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

Vous aimerez peut-être aussi