Pr : A.
Mirrane Support du cours 10 CPGE
2024/2025 Le langage SQL MP
Dans ce cours, la base de donnée suivantes est utilisée : II. Interrogation de la base de données
Departement (id, nom, description)
> SELECT
Employe (id, nom, date_naiss, annee_emp, ville, #id_dep)
La requête SELECT permet de récupérer des données spéci-
fique d’une base de données. Le résultat est une table
1 SELECT col1, col2, ... ou *
2 FROM table_name
Pour chaque employé, on met l’id de son dép. dans id_dep. pour afficher les colonnes col1, col2 ,... de la table table_name
On peut mettre * si on veut afficher tout les lignes
I. Manipulation des données Algèbre relationnelle : ∏col1,col2,... (table_name)
La manipulation des données concerne l’ajout, la modification
et l’insertion des lignes dans une table. > WHERE
1. Insertion des lignes Le mot clé WHERE est suivi par une condition, tout les lignes
pour ajouter une ligne, et spécifier les colonne à remplir. qui vérifie la condition vont s’afficher. Elle utilise les opéra-
teurs : =, !=, >, <, >=, >=, AND, OR, NOT, IN, LIKE.
1 INSERT INTO table_name(column1, column2, column3, ...)
2 VALUES (value1, value2, value3, ...); 1 SELECT *
2 FROM table_name
pour ajouter une ligne, en remplissant tout les champs. 3 WHERE condition
1 INSERT INTO table_name Algèbre relationnelle : σcondition (table_name)
2 VALUES (value1, value2, value3, ...); Exemple : Afficher les nom et année d’emploi de tout les em-
ployé de la ville "Rabat"
Exemple : Ajouter un département et un employé sans date de
naissance et sans date d’embauche. 1 SELECT nom, annee_emp
2 FROM employe
1 INSERT INTO departement
3 WHERE ville = "Rabat";
2 VALUES (6, "marketing", "bla bla bla");
3 INSERT INTO employe (id, nom, ville, id_dep)
En algèbre relationnelle : ∏nom,annee_emp (σville=”Rabat” (table_name))
4 VALUES (99, "Amine Kharchouf", "marrakech", 6);
> DISTINCT
Le mot clé DISTINCT est utilisé pour éliminer les lignes dou-
blons dans le résultat.
Exemple : afficher tout les villes des employés (sans répétition)
1 SELECT DISTINCT ville from employe;
2. Modification des lignes
1 UPDATE table_name
> AS : renommage
2 SET column1 = value1, column2 = value2, ...
3 WHERE condition; Le mot clé AS est utilisé pour renommer les colonnes et tables.
table_name : la table à modifiée 1 SELECT nom, date_emp AS "date" from employe AS E;
column1, column2, ... : les champs(colonnes) à modifié.
value1, value2, ... : les nouvelle valeurs de chaque champs. > LIKE
condition : modifier tout les lignes qui vérifient la condition.
Exemple :affecter le dép 2 à tout les employés dans "Rabat". LIKE est un opérateur conditionnelle utilisé pour comparer les
chaines de caractères. LIKE utilise les caractères spécial :
1 UPDATE employe SET id_dep=2 WHERE ville = "Rabat"; - Le signe % représente zéro, un ou plusieurs caractères.
- Le signe _ représente un seul caractère.
3. Suppressions des lignes Exemple1 : Afficher les nom des employé qui commence par a
1 DELETE FROM table_name WHERE condition;
Exemple2 : Afficher les Ville qui contient "bat"
1 SELECT nom FROM employe WHERE nom LIKE "a%";
condition : supprimer tout les lignes qui vérifient la condition. 2 SELECT ville FROM employe WHERE nom LIKE "%bat%";
Pr. A. Mirrane 1/2 MP 2024/2025
> ORDER BY > La jointure
Le mot clé ORDER BY est utilisé pour ordonné la table résul- La jointure est utilisé pour joindre deux ou plusieurs tables, et
tat selon les valeur d’une colonne. dans un ordre ascendant ou crée une nouvelle table qui contient tout les colonnes.
descendant.
1 SELECT *
1 SELECT ... FROM ... WHERE ... 2 FROM tab1 join tab2 ON tab1.cle_prim = tab2.cle_etr;
2 ORDER BY nom_colonne ASC / DESC;
La condition de jointure est l’égalité entre une clé primaire, et la
Exemple : Afficher les employés ordonné par leur date_emp. clé étrangère qui fait référence a cette clé primaire.
exemple : jointure entre employe et departement
1 SELECT * FROM employe ORDER BY date_emp ASC
1 SELECT *
2 FROM employe join departement as D ON id_dep = [Link];
> LIMIT
Le mot clé LIMIT est utilisé pour limiter le nombre de lignes
dans le résultat. (Afficher seulement les n premières lignes)
1 SELECT ... FROM ... WHERE ... LIMIT n;
Exemple : Afficher les 3 employés avec le plus petit id.
> Fonction d’agrégations
1 SELECT * FROM employe ORDER BY id ASC LIMIT 3
Ces fonctions permettent d’effectuer des opérations mathéma-
tiques ou des calculs statistiques sur un ensemble d’enregistre-
> OFFSET ments sélectionnés.
Le mot clé OFFSET est utilisé pour sauter un certain nombre de
1 SELECT col1, fonction(col2), ... FROM ...
lignes dans le résultat.
(commercer l’affichage par la (n+1)-ème ligne). count(colonne) retourne le nombre de lignes. MIN(col),
MAX(col), SUM(col) et AVG(col) donnent le minimum, le
1 SELECT ... FROM ... WHERE ... OFFSET n;
maximum, la somme et la moyenne des valeur dans col resp.
Exemple : Afficher le 3ème employé embaucher.
> GROUP BY
1 SELECT * FROM employe ORDER BY date_emp ASC GROUP BY permet de créer des groupes d’enregistrements sur
2 OFFSET 3 LIMIT 1;
lesquels pourront être utilisées les fonctions d’agrégation.
Les champs dans SELECT doivent être repris dans GROUP BY.
> Opérateurs ensemblistes
Opérateurs ensemblistes UNION, INTERSECT et EXCEPT 1 SELECT ... FROM ... GROUP BY colonne;
s’applique sur deux tables avec les mêmes colonnes, mais les
Exemple : Afficher pour chaque département le nombre d’emp.
lignes sont différents. Elles appliquent resp. l’union, l’intersec-
tion et la différence ensembliste sur les lignes des deux tables. 1 SELECT id_dep,count(id) FROM employe GROUP BY id_dep;
1 table1 UNION table2;
2 table1 INTERSECT (SELECT ...); > HAVING
3 (SELECT ...) EXCEPT (SELECT ...); HAVING permet d’appliquer des conditions sur les regroupe-
ments créés à l’aide de la clause GROUP BY. Contrairement à
Puisque la requête SELECT génère une table, elle peut être uti-
WHERE, HAVING admet les conditions sur les fonctions.
lisée dans avec les opérateurs ensemblistes.
Exemple : Afficher pour chaque département le nombre d’em-
ployés. affihcer seulement les dep avec un nombre > 10.
> Les sous-requête
Une requête SELECT peut être utilisé à l’intérieur d’une autre 1 SELECT id_dep, count(id) AS nombre FROM employe
requête pour récupérer des valeurs demander. 2 GROUP BY id_dep HAVING nombre > 10;
Généralement, une sous-requête est peut être utilisé au niveau
de FROM, WHERE ou HAVING. > Ordre des mots clés :
Exemple : Afficher les nom des employé dans le dép. RH.
1 SELECT col1 AS c1, col2, ... ou *
2 FROM tab1 as t1 join tab2 as t2 ON condition
1 SELECT nom FROM employe WHERE id_dep IN
3 WHERE condition simple
2 (SELECT id FROM departement WHERE nom = "RH");
4 GROUP BY colonne
5 HAVING condition sur les fonctions
6 ORDER BY colonne ASC/DESC
7 LIMIT nombre
8 OFFSET nombre
Pr. A. Mirrane 2/2 MP 2024/2025