27/11/2024
Syntaxe de la commande SELECT
Cette commande va servir à faire des requêtes pour
récupérer des données d’une table ou plusieurs tables.
La commande SELECT permet de sélectionner des
données de plusieurs tables.
Sa syntaxe est la suivante :
SELECT « liste des noms de colonnes »
FROM « Liste des tables »
WHERE « condition logique »
S.Nasiri
SELECT indique la liste des attributs
constituant le résultat.
FROM indique la (ou les) tables dans lesquelles
on trouve les attributs(informations) utiles à la
requête.
WHERE indique les conditions que doivent
satisfaire les n-uplets (enregistrements) de la
base pour faire partie du résultat.
S.Nasiri
1
27/11/2024
La liste des noms de colonnes: indique la liste
des colonnes choisies, séparées par des
virgules.
Lorsque l'on désire sélectionner l'ensemble
des colonnes d'une table il n'est pas
nécessaire de saisir la liste de ses colonnes,
l'option * permet de réaliser cette tâche.
S.Nasiri
La liste des tables indique l'ensemble des
tables (séparées par des virgules) sur
lesquelles on opère
La condition logique permet d'exprimer des
qualifications complexes à l'aide d'opérateurs
logiques et de comparateurs arithmétiques
S.Nasiri
2
27/11/2024
❑ Pour sélectionner juste les noms et les prénoms
des étudiants, la syntaxe est la suivante:
SELECT nom, prénom FROM Etudiant;
❑ Pour sélectionner tous les enregistrements de la
table « Etudiant » dont l’âge est 20 ans, la
syntaxe est la suivante:
SELECT * FROM Etudiant WHERE age=20;
S.Nasiri
On peut utiliser les opérateurs suivants dans les
conditions c’est-à-dire dans la clause WHERE:
Opérateur Signification
= Egal
<> Différent
(parfois noté aussi != )
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
S.Nasiri
3
27/11/2024
Pour sélectionner tous les enregistrements de
la table « etudiant » dont l’age superieur ou
égale à 20 ans:
SELECT * FROM etudiant WHERE age>=20
S.Nasiri
Opérateurs logiques
Il est possible de combiner plusieurs
conditions avec des opérateurs logiques :
◦ L'opérateur AND réunit deux ou plusieurs
conditions et sélectionne un enregistrement
seulement si cet enregistrement satisfait
TOUTES les conditions listées
◦ Toutes les conditions séparées par AND sont
vraies.
S.Nasiri
4
27/11/2024
Pour sélectionner tous les étudiants qui ont
l’âge 20 ans ,et le nom « amrani » la
syntaxe est la suivante:
SELECT * FROM etudiant WHERE age=20 AND
nom=‘amrani’
S.Nasiri
L'opérateur OR réunit deux conditions mais
sélectionne un enregistrement si une des
conditions listées est satisfaite.
Par exemple, pour sélectionner tous les
étudiants nommés ‘Amrani' ou ‘Salhi' :
SELECT * FROM etudiant WHERE
nom=‘Amrani’ OR nom=‘Salhi’
S.Nasiri
5
27/11/2024
L'option DISTINCT permet de ne conserver
que des lignes distinctes, en éliminant les
doublons
SELECT DISTINCT age, ville FROM etudiant
L'option ALL est, par opposition à l'option
DISTINCT, l'option par défaut. Elle permet de
sélectionner l'ensemble des lignes satisfaisant
à la condition logique
S.Nasiri
Pour sélectionner des enregistrements dont la
valeur d'un champ peut être comprise dans
une liste on utilise la clause IN
NOT IN sélectionne les enregistrements exclus
de la liste spécifiée après IN.
S.Nasiri
6
27/11/2024
SELECT *
FROM etudiant
WHERE age IN (18, 20,22,24);
SELECT *
FROM etudiant
WHERE age NOT IN (16,17,18);
S.Nasiri
Pour sélectionner des enregistrements dont la
valeur d'un champ peut être comprise entre
deux valeurs, on utilise la clause BETWEEN.
SELECT *
FROM etudiant
WHERE age BETWEEN 18 AND 24;
S.Nasiri
7
27/11/2024
La clause LIKE permet de faire des recherches sur le
contenu d'un champ.
Par exemple: pour sélectionner les étudiants dont
le nom commence par la lettre D :
SELECT *
FROM etudiant
WHERE nom LIKE ‘D%';
Remarque:
◦ % remplace un ensemble de caractères
◦ Le symbole _ remplace un seul caractère.
S.Nasiri
SQL a cinq fonctions importantes :
◦ SUM (): Donne le total d'un champ de tous les
enregistrements satisfaisant la condition de la
requête. Le champ doit bien sur être de type
numérique
◦ AVG (): donne la moyenne d'un champ de tous les
enregistrements satisfaisant la condition de la
requête
S.Nasiri
8
27/11/2024
MAX (): Donne la valeur la plus élevée d'un champ de
tous les enregistrements satisfaisant la condition de
la requête
MIN (): Donne la valeur la plus petite d'un champ de
tous les enregistrements satisfaisant la condition de
la requête.
COUNT (*) :Renvoie le nombre d'enregistrements
satisfaisant la requête.
S.Nasiri
Pour retourner le prix le plus petit de la table
Produit, le prix le plus élevé et le prix moyen.
SELECT
MIN(prix_unitaire),MAX(prix_unitaire),
AVG(prix_unitaire) FROM Produits
Pour retourner le nombre de produits dont le
libellé commence par la lettre 'P'.
SELECT COUNT (*)
FROM Produits
WHERE libelle LIKE 'P%';
S.Nasiri
9
27/11/2024
Il existe d'autres options pour la commande
SELECT :
◦ GROUP BY
◦ HAVING
◦ ORDER BY
S.Nasiri
Une des utilisations les plus courantes de la
clause GROUP BY est son association avec une
fonction d'ensemble (le plus souvent COUNT,
pour compter le nombre d'enregistrements
dans chaque groupe).
S.Nasiri
10
27/11/2024
Si on veut afficher pour chaque étudiant le
nombre d’emprunts qu'il a effectué:
SELECT num_etudiant,COUNT(*)
FROM emprunt
GROUP BY num_etudiant;
S.Nasiri
Exemple
Livre: Emprunt:
Code_livre Titre Code_auteur Num_etud Code_livre Date_emprunt Date_Retour_emprunt
Num_client
1 BD 2 1 3 2018-10-02 2018-10-22
2 Java 8 2 1 2017-02-21 2017-02-24
3 C 11 1 4 2018-11-25 2018-12-01
4 Python 9 3 2 2017-12-11 2017-12-17
… …
2 3 2018-05-12 2018-05-18
1 2 2019-03-25 2019-03-29
Etudiant:
Avec Group by:
Num_etud Nom Prénom Ville Num_etud Nbr_emprunt
1 Elmalki Sara Oujda 1 3
2 Amrani Ali Rabat 2 2
3 Mhamdi Hajar Meknès 3 1
… …
S.Nasiri
11
27/11/2024
La clause HAVING est utilisé avec la clause
GROUP BY, elle permet d'appliquer une
restriction sur les groupes créés grâce à la
clause GROUP BY.
SELECT ville,COUNT(*)
FROM etudiant
GROUP BY ville HAVING ville IN("fes","meknes" );
S.Nasiri
La clause ORDER BY suivie des mots clés ASC
ou DESC, permet de Trier les résultats d’une
requête en ordre croissant ou bien
décroissant
Le classement se fait sur des nombres ou des
chaînes de caractères.
S.Nasiri
12
27/11/2024
Pour trier les noms des étudiants par ordre
croissant (alphabétique):
SELECT * FROM etudiant
ORDER BY nom ASC;
S.Nasiri
13