0% ont trouvé ce document utile (0 vote)
13 vues67 pages

Chapitre3 LangageSQL

Le chapitre 3 présente le langage SQL, en détaillant ses principales catégories : le Langage de Définition des Données (LDD), le Langage de Manipulation des Données (LMD) et le Langage de Contrôle des Données (LCD). Il explique les instructions clés pour créer, modifier et supprimer des tables et des données, ainsi que les opérations de recherche et de gestion des droits d'accès. Des exemples pratiques illustrent l'utilisation des commandes SQL pour manipuler les données dans une base de données.

Transféré par

Amina Abbassi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues67 pages

Chapitre3 LangageSQL

Le chapitre 3 présente le langage SQL, en détaillant ses principales catégories : le Langage de Définition des Données (LDD), le Langage de Manipulation des Données (LMD) et le Langage de Contrôle des Données (LCD). Il explique les instructions clés pour créer, modifier et supprimer des tables et des données, ainsi que les opérations de recherche et de gestion des droits d'accès. Des exemples pratiques illustrent l'utilisation des commandes SQL pour manipuler les données dans une base de données.

Transféré par

Amina Abbassi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3

Le langage SQL

© 2021-2022 \ S. HAIDRAR 1
Introduction

© 2021-2022 \ S. HAIDRAR 2
Introduction

© 2021-2022 \ S. HAIDRAR 3
Introduction

© 2021-2022 \ S. HAIDRAR 4
Principales catégories de SQL
1. Langage de Définition des Données (LDD):
Il permet la définition des structures globale des tables, colonnes et de

la BD :

- Créer une BD/table,

- Créer une colonne,

- Supprimer une BD/table,

- Modifier une BD/table

Principales instruction: CREATE, ALTER, DROP, TRUNCATE,RENAME

© 2021-2022 \ S. HAIDRAR 5
Principales catégories de SQL

2. Langage de Manipulation des Données (LMD):

- faire des mises à jour (ajout, suppression, modification de lignes) des données

de la base.

- Il permet de faire des recherches (sélection) et visualiser les données

contenues dans les tables et la base de données.

Principales instruction: INSERT, UPDATE,DELETE,SELECT

© 2021-2022 \ S. HAIDRAR 6
Principales catégories de SQL

3. Langage de Control des Données (LCD):


Gérer les droits sur les objets de base en affectant les droits aux utilisateurs.

- Droit de lecture des données de la BD X pour l’utilisateur A

- Droits de lecture et modification de la BD X pour l’utilisateur B

- Droits de suppression pour l’utilisateur C

Principales instruction: GRANT, REVOKE

© 2021-2022 \ S. HAIDRAR 7
SQL: LDD
Définition des schémas
Création de tables (relations)
CREATE TABLE nom_de_table ( colonnes et contraintes)

Exemple 1:

CREATE TABLE Emprunteurs


( Matricule INT NOT NULL PRIMARY KEY,
Nom_Prenom CHAR(60) NOT NULL,
Dat_Nais DATE )

© 2021-2022 \ S. HAIDRAR 8
SQL: LDD
Les contraintes

© 2021-2022 \ S. HAIDRAR 9
SQL: LDD
Création de tables (suite)
Exemple 2:

CREATE TABLE Livres

( Cote INTEGER NOT NULL PRIMARY KEY,

Titre CHAR(255) NOT NULL,

Auteur CHAR(255),

ISBN CHAR(100) )

© 2021-2022 \ S. HAIDRAR 10
SQL: LDD
Création de tables (suite)
Exemple 3:
CREATE TABLE Emprunt
( Matricule INTEGER NOT NULL REFERENCES Emprunteurs (Matricule),
Cote INTEGER NOT NULL,
Dat_Emprunt DATE NOT NULL,
Dat_Remise DATE,
PRIMARY KEY (Matricule, Cote, Dat_Emprunt),
FOREIGN KEY (Cote) REFERENCES Livres (Cote) )

© 2021-2022 \ S. HAIDRAR 11
SQL: LDD
Création de tables (suite)
Exemple 4:

CREATE TABLE Personne_Eau

( CIN CHAR(10) NOT NULL PRIMARY KEY,

Nom CHAR(50) NOT NULL,

Dat_B DATE,

Quantité INT DEFAULT 1,

CHECK (Quantité BETWEEN 1 AND 5) )

© 2021-2022 \ S. HAIDRAR 12
SQL: LDD
Exercice:
Donnez le code SQL permettant de créer les tables de la BD dont le
schéma conceptuel est le suivant:
Etudiant (Matricule, Nom, Prénom, DatN, Niveau)
Matière (CodMat, NomMat, Coefficient, VHoraire)
Notes(#Matricule, #CodMat, Note)
N.B:
Les coefficients sont entre 1 et 5 dont la valeur par défaut est 1
Les notes sont entre 0 et 20.

© 2021-2022 \ S. HAIDRAR 13
SQL: LDD
La commande DROP:
- Permet de supprimer une base de données :

DROP DATABASE <Nom_Base_De_Données>

- Supprimer une table:

DROP TABLE <Nom_Table>

© 2021-2022 \ S. HAIDRAR 14
SQL : LMD
Langage de Manipulation des données (LMD)
 C'est un ensemble d'instructions permettant la recherche (sélection),

l'ajout, la modification et la suppression de données.

© 2021-2022 \ S. HAIDRAR 15
SQL: Mise à jours de données
Insertion de données: Ajouter une ligne dans une table.
 Insertion d'une ligne complète
INSERT INTO Table VALUES (Val_Attr1, Val_Attr2, ….)
Respecter l’ordre et le type des colonnes définies à la création
Exemple: INSERT INTO Ville VALUES (234, 'Kenitra')

 Insertion d'une ligne incomplète


INSERT INTO Table (Attr1, Attr2, …) VALUES (Val_Attr1, Val_Attr2, ….)
Les attributs non indiqués auront la valeur par défaut ou NULL.
Exemple: INSERT INTO Livres (Cote, Titre ) VALUES (100, 'XML')

© 2021-2022 \ S. HAIDRAR 16
SQL: Mise à jours de données
Modification de données: Modifier des lignes dans une table.
 Modification de toutes les lignes
UPDATE table SET attr1 = expression1 , attr2 = expression2 , …
Exemple: Incrémenter de 1 le nombre de salles de toutes les écoles
UPDATE Ecole SET NbSalle = NbSalle +1

 Modification des lignes satisfaisant une condition données


UPDATE table SET attr1 = expression1 , attr2 = expression2 , …
WHERE condition
Exemple: Doubler le nombre de salle de l'école dont le code est 23
UPDATE Ecole SET NbSalle = 2*NbSalle
WHERE Code_Ecole = 23

© 2021-2022 \ S. HAIDRAR 17
SQL: Mise à jours de données
Suppression de données: Supprimer des lignes d'une table.
 Suppression de toutes les lignes
DELETE FROM table
Exemple: Vider la table Ville
DELETE FROM Ville
 Suppression des lignes satisfaisant une condition données
DELETE FROM table
WHERE condition
Exemple: Supprimer les école dont le nombre de salles est <10
DELETE FROM Ecole
WHERE NbSalle <10

© 2021-2022 \ S. HAIDRAR 18
SQL: Recherche de données

Les instructions de recherche correspondent à des opérations de

l'algèbre relationnelle.

 Les opérations traitées seront:

• Projection

• Restriction

• Jointure (Produit Cartésien)

© 2021-2022 \ S. HAIDRAR 19
Algèbre Relationnelle et SQL
Projection
 Opération sur une relation R1 consistant à composer une relation R2

en relevant à la relation initiale (R1) tous les attributs non mentionnés

en opérandes, et en éliminant les éléments en double qui sont

conservés une seule fois.

© 2021-2022 \ S. HAIDRAR 20
Algèbre Relationnelle et SQL
Projection(suite)
Exemple:
Livres
Cote Titre Auteur ISBN
15 Le Langage C Claude Delanoy 2-266-0865-4
4 L'algèbre de base Frank Shin 2-123-2301-5
24 Bases de données Georges Gardarin 2-212-11281-5

PROJECT(Livres ,Titre, Auteur)


Titre Auteur
Le Langage C Claude Delanoy
L'algèbre de base Frank Shin
Bases de données Georges Gardarin

© 2021-2022 \ S. HAIDRAR 21
Algèbre Relationnelle et SQL
Projection en SQL:
SELECT Attributs
FROM Table
Exemple 1: Sélection des titres et auteurs de tous les livres disponibles
SELECT Titre, Auteur
FROM Livres

Remarque: Pour ne pas avoir des tuples en double, on utilise DISTINCT


Exemple: Sélection de tous les auteurs
SELECT DISTINCT Auteur
FROM Livres

© 2021-2022 \ S. HAIDRAR 22
Algèbre Relationnelle et SQL
Projection en SQL (suite)
 Si on veut sélectionner toutes les colonnes (attributs) d'une table

(relation)

SELECT *

FROM Table

Exemple 2: Sélection de tous les attributs de tous les livres disponibles

SELECT Cote,
* Titre, Auteur, ISBN

FROM Livres

© 2021-2022 \ S. HAIDRAR 23
Algèbre Relationnelle et SQL
Restriction
 Opération sur une relation R1 produisant une relation R2 de même

schéma (mêmes attributs), mais comportant seulement les tuples

qui vérifient une condition précisée en argument.

© 2021-2022 \ S. HAIDRAR 24
Algèbre Relationnelle et SQL
Restriction (suite)
Exemple: Emprunts
Cote Matricule Date_Emprunt Date_Remise
15 12308 11/10/2007 2/11/2007
4 12308 1/11/2007
30 12408 4/11/2007 11/11/2007
24 12308 12/10/2007 7/11/2007

Restrict (Emprunts,
Matricule = 12308 Matricule=12308)
(Emprunts)
Cote Matricule Date_Emprunt Date_Remise
15 12308 11/10/2007 2/11/2007
4 12308 1/11/2007
24 12308 12/10/2007 7/11/2007
© 2021-2022 \ S. HAIDRAR 25
Algèbre Relationnelle et SQL
Restriction en SQL:
SELECT *

FROM table

WHERE Condition

Exemple 1: Sélection des emprunts dont le matricule de l'emprunteur

est 12308.

SELECT *

FROM Emprunts

WHERE Matricule = 12308

© 2021-2022 \ S. HAIDRAR 26
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
La condition de la clause WHERE peut être exprimée en fonction de:
 Opérateurs de comparaison: =, <=, >=, <, >, <>
 Opérateurs logiques: AND, OR, NOT
 Les mots clés:
- BETWEEN pour tester si une la valeur d'une expression est
comprise entre deux valeurs constantes.
- IN pour tester si la valeur d'une expression appartient à une
liste de constantes.
- LIKE pour tester si une expression de type chaîne de
caractères contient une sous-chaîne.

© 2021-2022 \ S. HAIDRAR 27
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
Exemple 2: Sélection des livres dont la cote est entre 130 et 160.

SELECT *
Cote BETWEEN 130 AND 160
FROM Livres

WHERE Cote >= 130 AND Cote<=160

Exemple 3: Sélection des livres dont la cote n'est pas entre 130 et 160.

SELECT * NOT(Cote >= 130 AND Cote<=160)


FROM Livres

WHERE Cote < 130 OR Cote>160

© 2021-2022 \ S. HAIDRAR 28
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
Exemple 4: Sélection des livres dont la cote est 130, 140, 145 et 160.

SELECT *
FROM Livres
WHERE Cote IN (130, 140, 145, 160)

Exemple 5: Sélection des livres dont le titre contient "BD".

SELECT *
FROM Livres
WHERE Titre LIKE '*BD*'

© 2021-2022 \ S. HAIDRAR 29
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
Exemple 6: Sélection des livres dont le titre commence par "Algèbre".

SELECT *
FROM Livres
WHERE Titre LIKE 'Algèbre*'

Exemple 7: Sélection des livres dont le titre se termine par "BD".

SELECT *
FROM Livres
WHERE Titre LIKE '*BD'

© 2021-2022 \ S. HAIDRAR 30
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
Exemple 8: Livres dont le titre commence par un caractère suivi de "BD":
SELECT *
FROM Livres
WHERE Titre LIKE '?BD*'
Remarque: En SQL standard: *% , ? _ et #  un chiffre

Exemple 9: Sélection des emprunts dont la date de remise est


indéterminé. SELECT *
FROM Livres
WHERE Dat_Remise IS NULL

© 2021-2022 \ S. HAIDRAR 31
Algèbre Relationnelle et SQL
Restriction en SQL (Suite)
Exemple: Livres dont le titre contient deux chiffres qui se suivent:
SELECT *
FROM Livres
WHERE Titre LIKE '*##*'

Exemple : Livres dont le titre ne contient pas le mot "algèbre"

SELECT *
FROM Livres
WHERE Titre NOT LIKE '*algèbre*'

© 2021-2022 \ S. HAIDRAR 32
Algèbre Relationnelle et SQL
Combiner Projection et Restriction en SQL
 Sélectionner d'une relations R1 certains attributs des tuples vérifiant

une condition.

 Syntaxe en SQL:

SELECT Attributs

FROM Table

WHERE Condition

© 2021-2022 \ S. HAIDRAR 33
Algèbre Relationnelle et SQL
Combiner Projection et Restriction en SQL (Suite)
Exemple 10: Sélection du titre des livres de "Claude Delanoy".

SELECT Titre
FROM Livres
WHERE Auteur = "Claude Delanoy"

Exemple 11: Sélection du titre et de l'auteur des livres dont le titre

contient "Algèbre" ou dont le nom de l'auteur contient "Gardarin".

SELECT Titre , Auteur


FROM Livres
WHERE Tite LIKE "*Algèbre*" OR Auteur LIKE "*Gardarin*"

© 2021-2022 \ S. HAIDRAR 34
Algèbre Relationnelle et SQL
Produit Cartésien
 Opération portant sur deux relation R1 et R2, consistant à construire
une troisième relation ayant pour schéma la concaténation de ces
deux relations et pour tuples toutes les combinaisons des tuples
des relations R1 et R2.
 Notations possibles:

R1  R2

PRODUCT (R1, R2)

© 2021-2022 \ S. HAIDRAR 35
Algèbre Relationnelle et SQL
Produit Cartésien (Suite)

Exemple 12: Département


Code Nom_Dept
1 Informatique
2 Civil
3 Électrique

Étudiant
Matricule Nom_Prenom Code_Dept
12308 Alami Samir 1
12408 Semah Amal 3
© 2021-2022 \ S. HAIDRAR 36
Algèbre Relationnelle et SQL
Produit Cartésien (Suite)

Département  Étudiant

Code Nom_Dept Matricule Nom_Prenom Code_Dept


1 Informatique 12308 Alami Samir 1
1 Informatique 12408 Semah Amal 3
2 Civil 12308 Alami Samir 1
2 Civil 12408 Semah Amal 3
3 Électrique 12308 Alami Samir 1
3 Électrique 12408 Semah Amal 3

© 2021-2022 \ S. HAIDRAR 37
Algèbre Relationnelle et SQL
Produit Cartésien en SQL
SELECT *
FROM Table1 , Table2 , … , TableN

Exemple 13:

SELECT *
FROM Départements, Étudiants

© 2021-2022 \ S. HAIDRAR 38
Algèbre Relationnelle et SQL
La Jointure
 Consiste à combiner deux relations R1 et R2 tuple à tuple (ligne à

ligne) en vérifiant la concordance entre certains attributs (colonnes) des

deux relations (en général: une clé primaire avec une clé étrangère).
 C'est une projection d'une restriction sur un produit cartésien entre
plusieurs relations afin de: sélectionner certains attributs des tuples
du produit cartésien vérifiant une condition donnée.

 Notations possibles: R1  R2 (Condition)

Join (R1,R2,Condition)

© 2021-2022 \ S. HAIDRAR 39
Algèbre Relationnelle et SQL
La Jointure (Suite)
Exemple: Join (Département , Étudiant, Code = Code_Dept)

ou

Join (Département, Étudiant, Département.Code=Étudiant.Code_Dept)

Join (Département , Étudiant, Code = Code_Dept)

Code Nom_Dept Matricule Nom_Prenom Code_Dept


1 Informatique 12308 Alami Samir 1
3 Électrique 12408 Semah Amal 3

© 2021-2022 \ S. HAIDRAR 40
Algèbre Relationnelle et SQL
La Jointure (Suite)
Exemple 14:

Project
( Join (Département, Étudiant, Code=Code_Dept), Nom_Dept,Nom_Prenom)

SELECT Nom_Dept , Nom_Prenom

FROM Département , Étudiant


WHERE Département.Code
Code_Dept = Code = Étudiant.Code_Dept
Résultat? ……………………………………………………………………..
……………………………………………………………………..

© 2021-2022 \ S. HAIDRAR 41
Algèbre Relationnelle et SQL
La Jointure (Suite)
 S'il y des attributs de même nom dans les relations de la jointure, on
doit préfixer ces attributs par les noms de leurs tables respectives

comme suit: Table.Attribut

Exemple 15: Ville (Code_V, Nom_Ville)

Ecole (Code_E, Nom_Ecole, #Code_V)

Ville Ecole
Code_V Nom_Ville Code_E Nom_Ecole NbSalle Code_V
1 Rabat 120 Mohammed V 20 1
2 Casa 130 Imam Malek 15 1
3 Tanger 140 Al Massira 25 3
© 2021-2022 \ S. HAIDRAR 42
Algèbre Relationnelle et SQL
Exemple 15 (Suite)
Ville  Ecole
Code_V Nom_Ville Code_E Nom_Ecole NbSalle Code_V
1 Rabat 120 Mohammed V 20 1
1 Rabat 130 Imam Malek 15 1
1 Rabat 140 Al Massira 25 3
2 Casa 120 Mohammed V 20 1
2 Casa 130 Imam Malek 15 1
2 Casa 140 Al Massira 25 3
3 Tanger 120 Mohammed V 20 1
3 Tanger 130 Imam Malek 15 1
3 Tanger 140 Al Massira 25 3

© 2021-2022 \ S. HAIDRAR 43
Algèbre Relationnelle et SQL
Exemple 15 (Suite)

Sélectionner le nom de l'école suivi du nom et du code de ville

SELECT Nom_Ecole , Nom_Ville, Ville. Code_V

FROM Ville , Ecole

WHERE Ville. Code_V =Ecole. Code_V

© 2021-2022 \ S. HAIDRAR 44
Algèbre Relationnelle et SQL
Les Jointures (Suite)
 On peut utiliser des alias comme préfixes des attributs au lieu
des noms de tables.

Exemple 16: Ville (Code_V, Nom_Ville)


Ecole (Code_E, Nom_Ecole, #Code_V)

SELECT Code_V, Nom_Ville, Nom_Ecole


V.
FROM Ville V , Ecole E

WHERE Code_V = Code_V


V. E.

© 2021-2022 \ S. HAIDRAR 45
Algèbre Relationnelle et SQL
Les Jointures (Suite)
 Utilisation d'une table plusieurs fois dans la clause FROM.
Exemple: Joueur(IdJ, NomJ)
Compétition (IdC, NomC, #IdJ1, #IdJ2, #IdJ3)
Chercher le nom de chaque compétition ainsi que les noms des gagnants.

SELECT NomC, J1.NomJ, J2.NomJ, J3.NomJ

FROM Compétition, Joueur J1, Joueur J2, Joueur J3

WHERE J1.IdJ = C.IdJ1 and J2.IdJ = C.IdJ2 and J3.IdJ = C.IdJ3

© 2021-2022 \ S. HAIDRAR 46
Autojointure

EMP Deptno NOM sal


Liste des employés ayant un salaire 10 toto 5000
égale à celui de « titi »
10 tata 1500
10 titi 1250
20 ta 2975
20 to 3000
20 ti 1100
30 tan 2850
30 ton 1250
30 tin 1600
30 tato 1500
30 toti 950
30 tutu 1250
© 2021-2022 \ S. HAIDRAR 47
47
Requêtes sur plusieurs tables: la jointure
Autojointure

SELECT expr
FROM table1 Alias1, table1 Alias 2
WHERE Alias1.col1= Alias2.col1

tab1 col1

© 2021-2022 \ S. HAIDRAR 48
48
Autojointure

EMP Deptno NOM sal


Liste des employés ayant un salaire 10 toto 5000
égale à celui de « titi »
10 tata 1500
10 titi 1250
20 ta 2975
20 to 3000
20 ti 1100
SELECT *
FROM EMP E1, EMP E2 30 tan 2850
WHERE E1.sal=E2.sal 30 ton 1250
and E1.Nom =‘titi’;
30 tin 1600
30 tato 1500
30 toti 950
30 tutu 1250
© 2021-2022 \ S. HAIDRAR 49
49
Autojointure

EMP Deptno NOM sal


Liste des employés ayant un salaire 10 toto 5000
<= à celui de « titi »
10 tata 1500
10 titi 1250
20 ta 2975
20 to 3000
20 ti 1100
SELECT *
FROM EMP E1, EMP E2 30 tan 2850
WHERE E1.sal<=E2.sal 30 ton 1250
and E1.Nom =‘titi’;
30 tin 1600
30 tato 1500
30 toti 950
30 tutu 1250
© 2021-2022 \ S. HAIDRAR 50
50
Algèbre Relationnelle et SQL
Classement des tuples

 On peut classer les lignes d'une requête de sélection dans l'ordre


croissant ou décroissant selon un ou plusieurs attributs.

 Syntaxe: SELECT Attribut(s)

FROM Table(s)

WHERE Condition

ORDER BY Attribut1 DESC, Attribut2 ASC, …

 L'ordre par défaut: Croissant (ASC).

© 2021-2022 \ S. HAIDRAR 51
Algèbre Relationnelle et SQL
Classement des tuples (Suite)
Exemple 17:
SELECT Nom_Ecole, Nom_Ville
FROM Ville V , Ecole E
WHERE V.Code_V = E.Code_V
ORDER BY Nom_Ecole, Nom_Ville DESC

Exemple 18:
SELECT Nom_Ecole, Nom_Ville
FROM Ville V , Ecole E
WHERE V.Code_V = E.Code_V
ORDER BY 1, 2 DESC

© 2021-2022 \ S. HAIDRAR 52
Algèbre Relationnelle et SQL
Fonctions de Calcul (Fonctions d’agrégation)
 Elles prennent le nom d'un attribut comme argument.
 Elles fournissent une seule valeur en résultat. Cette valeur est

calculée avec toutes les valeurs de l'attribut (colonne) spécifié.


 Fonctions de calcul:
COUNT: Nombre de valeurs d'une colonne.
AVG : Moyenne des valeurs d'une colonne.
SUM : Somme des valeurs d'une colonne.
MIN : Minimum des valeurs d'une colonne.
MAX : Maximum des valeurs d'une colonne.

© 2021-2022 \ S. HAIDRAR 53
Algèbre Relationnelle et SQL
Fonctions de Calcul (Suite)
Exemple 19: Nombre d'écoles

SELECT COUNT(Nom_Ecole) SELECT COUNT(*)

FROM Ecole FROM Ecole

Remarque: Le résultat est composé d'une seule colonne sans nom


explicite. On peut donner un nom explicite à une colonne
comme suit:
SELECT COUNT(Nom_Ecole) AS [Nombre d'écoles]
FROM Ecole

© 2021-2022 \ S. HAIDRAR 54
Algèbre Relationnelle et SQL
Fonctions de Calcul (Suite)

Exemple 20: Nombre d'écoles à Rabat

SELECT COUNT(Nom_Ecole) AS [Nombre d'écoles à Rabat]

FROM Ville V , Ecole E

WHERE V.Code_V = E.Code_V AND Nom_Ville = "Rabat"

Exemple 21: Moyenne des salles par école.

SELECT AVG(NbSalle) AS [Moyenne des salles]

FROM Ecole

© 2021-2022 \ S. HAIDRAR 55
Algèbre Relationnelle et SQL
Fonctions de Calcul (Suite)

Exemple 22: Le minimum de nombre de salles des écoles

SELECT MIN(NbSalle) AS [Minimum de nombre de salles]

FROM Ecole

Exemple 23: Le nombre total de salles de toutes les écoles.

SELECT SUM(NbSalle) AS [Nombre total de salle]

FROM Ecole

© 2021-2022 \ S. HAIDRAR 56
Algèbre Relationnelle et SQL
Regroupement (ou agrégat): (Suite)
 Partitionnement des lignes d'une table en plusieurs groupes selon les
valeurs d'un ou de plusieurs attributs afin d'appliquer des fonctions de
calcul.
 Regroupement réalisé en utilisant le mot-clé GROUP BY suivi d'une
liste d'attributs.
Exemple 24: Nom de ville et nombre de ses écoles
SELECT Nom_Ville, COUNT(Nom_Ecole)
FROM VILLE V, ECOLE E
WHERE V.Code_V = E.Code_V
GROUP BY V.Code_V

© 2021-2022 \ S. HAIDRAR 57
Algèbre Relationnelle et SQL
Regroupement (Suite)
Remarque:
En ACCESS, les attributs de regroupement (ceux devant Group By)
doivent apparaître dans la clause SELECT.
Dans la requête précédente: On doit faire un groupement par Nom_Ville
ou inclure V.Code_V dans la clause SELECT.

Exercices:

- Nom de ville suivi du nombre total des salles de ses écoles.

- Titre du livre et le nombre d'emprunteurs qui l'ont emprunté.

© 2021-2022 \ S. HAIDRAR 58
Algèbre Relationnelle et SQL
Regroupement (Suite)

Clause HAVING
 Pour considérer seulement les groupes satisfaisant une condition.

 La condition doit comporter des fonctions d'agrégation.

Remarque: La condition de la clause WHERE ne doit pas comporter des

fonctions d'agrégation.

© 2021-2022 \ S. HAIDRAR 59
Algèbre Relationnelle et SQL
Regroupement (Suite)
Exemple 25: Les villes ayant plus qu'une école

SELECT Nom_Ville, COUNT(Nom_Ecole)

FROM Ville V, Ecole E

WHERE V.Code_V = E.Code_V


Nom_Ville
GROUP BY V.Code_V

HAVING COUNT(Nom_Ecole) >= 2

© 2021-2022 \ S. HAIDRAR 60
Langage SQL
La clause GROUP BY
EMP Deptno sal
Question:
10 5000
Table EMP 10 1500
salaire moyen pour
Chaque département de
10 1300 la table EMP
20 2975
20 3000
20 1100
30 2850
30 1250
30 1600
30 1500
30 950
30 1250
© 2021-2022 \ S. HAIDRAR 61
Langage SQL
La clause GROUP BY

SELECT column, group_fonction


FROM table
[ WHERE condition ]
[ GROUP BY group_by_expression ]
[ ORDER BY column];

Remarque :
 Les attributs du select ne peuvent être que
– L’attribut qui crée le groupe
– Une fonctions de groupe.

© 2021-2022 \ S. HAIDRAR 62
Langage SQL
La clause GROUP BY

Exemples :
SELECT deptno, AVG( sal )
FROM emp
GROUP BY deptno;

EMP Deptno sal


10 2600
20 2175
30 1566.7

© 2021-2022 \ S. HAIDRAR 63
Langage SQL
La clause GROUP BY
EMP Deptno job sal
10 Dir technique 5000
10 Chef projet 1500 Question
10 programmeur 1300
20 Chef projet 2975 Somme des salaires pour
chaque poste, regroupés
20 Analyste 3000 par département
20 programmeur 1100
30 Chef projet 2850
30 commercial 1250
30 commercial 1600
30 commercial 1500
30 programmeur 950
30 commercial 1250
© 2021-2022 \ S. HAIDRAR 64
Langage SQL
La clause GROUP BY
SELECT deptno, job, SUM( sal )
FROM emp
GROUP BY deptno, job;

Deptno job SUM(sal)


10 programmeur 1300
10 Chef projet 1500
10 Dir technique 5000
20 Analyste 6000
20 programmeur 1900
20 Chef projet 2975
30 programmeur 950
30 Chef projet 2850

© 2021-2022 \ S. HAIDRAR 65
65
Langage SQL
La clause GROUP BY avec HAVING

SELECT column, group_fonction


FROM table
[ WHERE condition ]
[ GROUP BY group_by_expression
[ HAVING group_condition ] ]
[ ORDER BY column];

© 2021-2022 \ S. HAIDRAR 66
66
Langage SQL
La clause GROUP BY avec HAVING

SELECT deptno, MAX( sal ) EMP Deptno job sal


FROM emp
GROUP BY deptno 10 Dir technique 5000
HAVING MAX( sal ) > 2900; 10 Chef projet 1500
Deptno MAX(sal) 10 programmeur 1300
10 5000 20 Chef projet 2975

20 3000 20 Analyste 3000

30 2850 20 programmeur 1100


30 Chef projet 2850
30 commercial 1250
Deptno MAX(sal) 30 commercial 1600
10 5000 30 commercial 1500
20 3000 30 programmeur 950
© 2021-2022 \ S. HAIDRAR 67
30 commercial 1250

Vous aimerez peut-être aussi