Vous êtes sur la page 1sur 17

Structured Query Language

1
Data Manipulation Language
Langage de Manipulation des Données

2
Les ordres SQL

CREATE Langage de Définition des Données


ALTER
DROP
RENAME
TRUNCATE
INSERT Langage de Manipulation des Données
UPDATE
DELETE
SELECT
COMMIT Contrôle des transactions
ROLLBACK
GRANT Langage de Contrôle des Données
REVOKE

3
Langage de Manipulation des Données

SELECT
GROUP BY Définition des groupes
HAVING Condition sur les groupes

SELECT AVG(note) FROM noter ;

SELECT section, AVG(note) FROM noter ; => ERREUR

SELECT section, AVG(note) FROM noter


GROUP BY section ;

La clause GROUP BY doit inclure toutes les colonnes du SELECT


qui ne figurent pas dans des fonctions de groupe.

4
Langage de Manipulation des Données

SELECT
GROUP BY Définition des groupes
HAVING Condition sur les groupes

SELECT AVG(note) FROM noter


GROUP BY section ;

La colonne citée en GROUP BY ne doit pas nécessairement


figurer dans la liste du SELECT

5
Langage de Manipulation des Données

SELECT
GROUP BY Définition des groupes
HAVING Condition sur les groupes

SELECT section, matiere, AVG(note)


FROM noter
GROUP BY section, matiere ;
SECTION MATIERE AVG(NOTE)
-------------- ------------- ----------------
DI1_2005 C/S 14,5
DI1_2005 algo 10
DI1_2005 en plus 0
DI1_2005 merise 11,5
DI2_2005 algo 10
DI2_2005 merise 15
6
Langage de Manipulation des Données

SELECT
GROUP BY Définition des groupes
HAVING Condition sur les groupes

SELECT section, AVG(note) FROM noter


GROUP BY section
HAVING AVG(note) <= 11 ;

SELECT section, AVG(note) FROM noter


GROUP BY section
HAVING MAX(note) < 16 ;

7
Langage de Manipulation des Données

SELECT
ORDER BY Tri des lignes

SELECT section, AVG(note) FROM noter


GROUP BY section
ORDER BY section ASC ;

SELECT section, matiere FROM noter SELECT section, AVG(note) FROM noter
ORDER BY section ASC, GROUP BY section,matiere
matiere DESC ; HAVING MAX(note) < 15
ORDER BY avg(note) DESC;

SELECT section, AVG(note) FROM noter


GROUP BY section,matiere
HAVING MAX(note) < 15
ORDER BY matiere DESC;

8
Langage de Manipulation des Données

SELECT Résumé

SELECT section, matiere, AVG(note)


FROM noter
WHERE matiere LIKE 'mer%'
GROUP BY section, matiere
HAVING MAX(note) < 13
ORDER BY section DESC;

9
Langage de Manipulation des Données

SELECT Résumé

 SQL comprend des fonctions de groupe (AVG, COUNT,


MIN…)

 GROUP BY permet de créer des sous-groupes

 HAVING permet d’exclure des groupes

 Les clauses GROUP BY et HAVING doivent être placées


après le WHERE

 La clause ORDER BY est placée en dernier

10
Opérateurs Ensemblistes

UNION Toutes les lignes distinctes ramenées par deux requêtes


UNION ALL Toutes les lignes ramenées par les deux requêtes
(doublons compris)
INTERSECT Toutes les lignes communes aux deux requêtes
MINUS Toutes les lignes du 1er select moins les lignes du second
select

SELECT nom, job, sal FROM emp


UNION
SELECT hnom, hjob, hsal FROM emp_history ;

SELECT nom, job, sal FROM emp


UNION ALL
SELECT hnom, hjob, hsal FROM emp_history ;

11
Opérateurs Ensemblistes

UNION Toutes les lignes distinctes ramenées par deux requêtes


UNION ALL Toutes les lignes ramenées par les deux requêtes
(doublons compris)
INTERSECT Toutes les lignes communes aux deux requêtes
MINUS Toutes les lignes du 1er select moins les lignes du second
select

SELECT nom, job, sal FROM emp


INTERSECT
SELECT hnom, hjob, hsal FROM emp_history ;

SELECT nom, job, sal FROM emp


MINUS
SELECT hnom, hjob, hsal FROM emp_history
ORDER BY 1;
12
Opérateurs Ensemblistes

UNION  Les colonnes du SELECT doivent être égales en


UNION ALL nombre et avoir des données du même type
INTERSECT
MINUS  Les doublons sont automatiquement éliminés sauf
avec UNION ALL

 Les noms de colonnes apparaissant dans le


résultat sont ceux de la première requête

 Par défaut, le tri est croissant sauf avec UNION


ALL

13
Sous interrogation

MONO LIGNE La sous interrogation ne ramène qu’une seule ligne

SELECT code, libelle, prix FROM articles


WHERE prix >
( SELECT AVG(prix) FROM articles) ;

SELECT code, libelle, prix FROM articles


WHERE prix =
( SELECT round(AVG(prix)) + 64 FROM articles) ;

Opérateur mono ligne : =, >, >=, <, <=, <>

14
Sous interrogation

MULTI LIGNE La sous interrogation ramène plusieurs lignes


Opérateur IN, ANY, ALL

SELECT nom, prenom, age, note FROM stagiaires


WHERE note IN
( SELECT AVG(note) FROM stagiaires
GROUP BY age ) ;

SELECT nom, prenom, age, note FROM stagiaires


WHERE note IN (10, 12, 13, 14) ;

15
Sous interrogation

MULTI LIGNE La sous interrogation ramène plusieurs lignes


Opérateur IN, ANY, ALL

SELECT nom, prenom, age, note FROM stagiaires


WHERE note < ANY
( SELECT AVG(note) FROM stagiaires
GROUP BY age ) ;

< ANY : Inférieur à au moins une des valeurs => < MAX(valeur)
> ANY : Supérieur à au moins une des valeurs => > MIN(valeur)
= ANY : Egal à au moins une des valeurs => IN

16
Sous interrogation

MULTI LIGNE La sous interrogation ramène plusieurs lignes


Opérateur IN, ANY, ALL

SELECT nom, prenom, age, note FROM stagiaires


WHERE note < ALL
( SELECT AVG(note) FROM stagiaires
GROUP BY age ) ;

< ALL : Inférieur à toutes les valeurs => < MIN(valeur)


> ALL : Supérieur à toutes les valeurs => > MAX(valeur)

17

Vous aimerez peut-être aussi