Cours Pratique de SQL L1 23-24
Cours Pratique de SQL L1 23-24
L1 Math-Info-Stat
2023 – 2024
Chap. I : Présentation
I.1-Objectifs
I.2-Définition
I.3-Fonctionnalités
Chap. II : Les Commandes SQL
II.1-La Projection
II.2-La Restriction
II.3-Le Tri
II.4-Le Regroupement
II.5-La Jointure
II.6-Les Sous Requêtes
II.7-Les Opérateurs Ensemblistes
II.8-Les Mises à Jour
2
DEROULE DU COURS
3
Chapitre I
Présentation
4
4
Introduction
5
5
Chapitre I : Présentation
I.1- Objectifs
6
6
Chapitre I : Présentation
I.2- Définitions
Système de
Gestion de
Base de Base de
Données Données
7
7
Chapitre I : Présentation
I.2- Définitions
- Tables
- Champs
Base de - Enregistrements
données - Contraintes
8
8
Chapitre I : Présentation
I.2- Définitions
- Tables
- Champs
- Enregistrements
- Contraintes
9
9
Chapitre I : Présentation
I.2- Définitions
Système de - LDD
Gestion de - LMD
Base de - Contrôle d’accès aux données
Données - Gestion des transactions
10
10
Chapitre I : Présentation
I.3- Fonctionnalités
11
11
Chapitre I : Présentation
I.3- Fonctionnalités
12
12
Chapitre I : Présentation
I.3- Fonctionnalités
❖ Processus de traitement
1
Je rédige ma Le processeur de
requête en SQL requête la traduit et
détermine le plan
d’exécution .
Nous retourne notre
résultat de la requête. 2
14
14
Chapitre I : Présentation
1. SITE(id_site, coordonnées)
4. MATIERE(code_matière, intitulé)
15
15
Chapitre I : Présentation
17
17
Chapitre II : Les Commandes SQL
➢ SELECT ≪ noms_des_champs ≫
FROM ≪ noms_des_table ≫
18
18
Chapitre II : Les Commandes SQL
19
19
Chapitre II : Les Commandes SQL
II.1- SELECT(Projection)
➢ Obtenir plusieurs colonnes
SELECT prenom, nom
FROM client
20
20
Chapitre II : Les Commandes SQL
II.1- SELECT
➢ Eviter la redondance
SELECT DISTINCT prénom
FROM client
Intérêt
L’utilisation de la commande DISTINCT est très pratique pour
éviter les résultats en doubles.
21
21
Chapitre II : Les Commandes SQL
II.1- SELECT
➢ Alias sur Champ/Colonne
SELECT champ1 AS c1, champ2
FROM table
Ou encore
SELECT champ1 c1, champ2
FROM table
➢ Syntaxe
SELECT « nom_colonnes »
FROM « nom_table »
WHERE condition
23
23
Chapitre II : Les Commandes SQL
II.2- WHERE(Restriction)
24
24
Chapitre II : Les Commandes SQL
II.2- WHERE(Restriction)
➢ Opérateurs de comparaisons
25
25
Chapitre II : Les Commandes SQL
II.2- WHERE
➢ Opérateurs de comparaisons
3-SELECT nom_colonnes
FROM nom_table
WHERE condition1 AND (condition2 OR condition3)
28
28
Chapitre II : Les Commandes SQL
II.6- ORDER BY
➢ La commande ORDER BY permet de trier les lignes dans un résultat
d’une requête SQL. Il est possible de trier les données sur une ou
plusieurs colonnes, par ordre ascendant ou descendant.
➢ Syntaxes:
➢ Par défaut les résultats sont classes par ordre ascendant ASC, toutefois il
est possible d’inverser l’ordre en utilisant le suffixe DESC après le nom de
la colonne. Par ailleurs, il est possible de trier sur plusieurs colonnes en les
séparant par une virgule.
30
30
Chapitre II : Les Commandes SQL
II.6- ORDER BY
➢ Par défaut les résultats sont classes par ordre ascendant ASC, toutefois il
est possible d’inverser l’ordre en utilisant le suffixe DESC après le nom de
la colonne. Par ailleurs, il est possible de trier sur plusieurs colonnes en les
séparant par une virgule.
Exemple : Ecrire la requête qui retourne la liste des clients par ordre
alphabétique.
31
31
Chapitre II : Les Commandes SQL
II.8- GROUP BY
➢ La commande GROUP BY est utilisée en SQL pour grouper plusieurs
résultats et utiliser une fonction de totaux sur un groupe de résultat
➢ Syntaxes:
SELECT colonne1, Fonction(colonne2)
FROM table
GROUP BY colonne1
II.8- GROUP BY
➢ Exemple table ACHAT:
II.8- GROUP BY
➢ Exemple table ACHAT:
SELECT client, SUM(tarif)
FROM achat
GROUP BY client
35
35
Chapitre II : Les Commandes SQL
II.8- GROUP BY
➢ Exemple table ACHAT:
Un doublon
36
36
Chapitre II : Les Commandes SQL
II.9- HAVING
➢ La condition HAVING en SQL est presque similaire à WHERE à la seule
différence que HAVING permet de filtrer en utilisant des fonctions telles que
SUM(), COUNT(), AVG(), MIN() ou MAX().
➢ Syntaxe:
SELECT colonne1, Fonction(colonne2)
FROM nom_table
GROUP BY colonne1
HAVING Condition2
➢ Cela permet donc de SÉLECTIONNER les colonnes de la table “nom_table”
en GROUPANT les lignes qui ont des valeurs identiques sur la colonne
“colonne1” et que la condition de HAVING soit respectée.
Important : HAVING est très souvent utilisé en même temps que GROUP
BY bien que ce ne soit pas obligatoire. 37
37
Chapitre II : Les Commandes SQL
II.9- HAVING
➢ Exemple:
➢ Dans cette table on souhaite récupérer la liste des clients qui ont
commandé plus de 40€, toute commandes confondu.
38
38
Chapitre II : Les Commandes SQL
II.9- HAVING
➢ Dans cette table on souhaite récupérer la liste des clients qui ont
commandé plus de 40€, toute commandes confondu.
SELECT client,
SUM(tarif)
FROM achat
GROUP BY client
HAVING SUM(tarif) > 40
41
41
Chapitre II : Les Commandes SQL
43
43
Chapitre II : Les Commandes SQL
Dans cette requête, 4 colonnes ont été définies. Le mot-clé ≪ type_donnees ≫ sera a
remplacer par un mot-clé pour définir le type de données (INT, DATE, TEXT …). Pour
chaque colonne, il est également possible de définir des options telles que (liste non-
exhaustive) :
• NOT NULL : empêche d’enregistrer une valeur nulle pour une colonne.
• DEFAULT : attribuer une valeur par défaut si aucune données n’est indiquée
pour cette colonne lors de l’ajout d’une ligne dans la table.
• PRIMARY KEY : indiquer si cette colonne est considérée comme clé primaire
pour un index. 44
44
Chapitre II : Les Commandes SQL
❑ Pour Ajouter :
ALTER TABLE nom_table
ADD nom_colonne type_donnees
45
45
Chapitre II : Les Commandes SQL
Exemple:
ALTER TABLE utilisateur
ADD adresse_rue VARCHAR(255)
46
46
Chapitre II : Les Commandes SQL
Exemple:
ALTER TABLE utilisateur
DROP adresse_rue
47
47
Chapitre II : Les Commandes SQL
48
48
Chapitre II : Les Commandes SQL
Attention : il faut utiliser cette commande avec attention car une fois
supprimée, les données sont perdues. Avant de l’utiliser sur une base
importante il peut être judicieux d’effectuer un backup (une sauvegarde) pour
éviter les mauvaises surprises.
➢ Syntaxe:
DROP TABLE nom_table
✓ S’il y a une dépendance avec une autre table, il est recommande de les
supprimer avant de supprimer la table. C’est le cas par exemple s’il y a
des clés étrangères. 49
49
Chapitre II : Les Commandes SQL
▪ Cette deuxième solution est très similaire, excepte qu’il faut indiquer
le nom des colonnes avant ≪VALUES ≫.
▪ Il est possible de ne pas renseigner toutes les colonnes. De plus,
l’ordre des colonnes n’est pas important.
51
51
Chapitre II : Les Commandes SQL
✓ Exemple
53
53
Chapitre II : Les Commandes SQL
II.16- DELETE
La commande DELETE en SQL permet de supprimer des lignes dans une
table. En utilisant cette commande associe a WHERE il est possible de
sélectionner les lignes concernées qui seront supprimées.
Attention : Avant d’essayer de supprimer des lignes, il est recommande d’effectuer une
sauvegarde de la base de données, ou tout du moins de la table concernée par la
suppression. Ainsi, s’il y a une mauvaise manipulation il est toujours possible de
restaurer les données.
➢ Syntaxe:
DELETE FROM table
WHERE condition
Attention : s’il n’y a pas de condition WHERE alors toutes les lignes seront
supprimees et la table sera alors vide.
54
54
Chapitre II : Les Commandes SQL
II.16- DELETE
➢ Exemple: Soit la table Utilisateur ci-dessous.
55
55
Chapitre II : Les Commandes SQL
56
56
Chapitre II : Les Commandes SQL
II.17- DELETE
➢ Exemple: Soit la table Utilisateur ci-dessous.
57
57
Chapitre II : Les Commandes SQL
II.18- JOINTURE
58
58
Chapitre II : Les Commandes SQL
II.18- JOINTURE
➢ Types de jointures :
✓ INNER JOIN
Retourne uniquement les résultats ou la condition est vrai dans les 2
tables.
✓ Syntaxe
SELECT *
FROM table1
INNER JOIN table2 ON [Link] = table2.fk_id
II.18- JOINTURE
➢ Types de jointures :
✓ Exemple :
II.18- JOINTURE
✓ Exemple :
61
61
Chapitre II : Les Commandes SQL
II.18- JOINTURE
➢ Types de jointures :
✓ LEFT JOIN
Cette commande (aussi appelée LEFT OUTER JOIN) est un type de
jointure entre 2 tables. Cela permet de lister tous les résultats de la table de
gauche (left = gauche) même s’il n’y a pas de correspondance dans la
deuxième tables.
✓ Syntaxe
SELECT *
FROM table1
LEFT JOIN table2 ON [Link] = table2.fk_id
II.18- JOINTURE
✓ Exemple :
63
63
Chapitre II : Les Commandes SQL
II.18- JOINTURE
➢ Types de jointures :
✓ RIGHT JOIN
Cette commande SQL(ou RIGHT OUTER JOIN) est un type de jointure
entre 2 tables qui permet de retourner tous les enregistrements de la table
de droite (right = droite) même s’il n’y a pas de correspondance avec la
table de gauche. S’il y a un enregistrement de la table de droite qui ne
trouve pas de correspondance dans la table de gauche, alors les colonnes
de la table de gauche auront NULL pour valeur.
✓ Syntaxe
SELECT *
FROM table1
RIGHT JOIN table2 ON [Link] = table2.fk_id
Cette syntaxe stipule qu’il faut lister toutes les lignes du tableau table2
(tableau de droite) et afficher les données associées du tableau table1 s’il y
a une correspondance entre ID de table1 et FK_ID de table2. 64
64
Chapitre II : Les Commandes SQL
II.18- JOINTURE
✓ Exemple :
65
65
Chapitre II : Les Commandes SQL
II.18- JOINTURE
➢ Types de jointures :
✓ FULL JOIN
Dans le langage SQL, la commande FULL JOIN (ou FULL OUTER JOIN)
permet de faire une jointure entre 2 tables. L’utilisation de cette commande
permet de combiner les résultats des 2 tables, les associer entre eux grâce
a une condition et remplir avec des valeurs NULL si la condition n’est pas
respectée.
✓ Syntaxe
SELECT *
FROM table1
FULL JOIN table2 ON [Link] = table2.fk_id
La condition présentée ici consiste a lier les tables sur un identifiant, mais la
condition peut être définie sur d’autres champs.
66
66
Chapitre II : Les Commandes SQL
II.18- JOINTURE
✓ Exemple :
Pour lister tous les utilisateurs ayant effectue ou non une vente, et de
lister toutes les ventes qui sont associées ou non a un utilisateur, la
requête SQL sera la suivante :
.
SELECT id, prenom, nom, date_achat, num_facture, prix_total
FROM utilisateur
FULL JOIN commande ON [Link] = commande.utilisateur_id
67
67
Chapitre II : Les Commandes SQL
➢ SYNTAXES
o Requête imbriquée qui retourne un seul résultat
SELECT *
FROM `table`
WHERE `nom_colonne` = (
SELECT `valeur`
FROM `table2`
LIMIT 1
) 68
68
Chapitre II : Les Commandes SQL
69
69
Chapitre II : Les Commandes SQL
II.20- EXISTS
Dans le langage SQL, la commande EXISTS s’utilise dans une clause
conditionnelle pour savoir s’il y a une présence ou non de lignes lors de
l’utilisation d’une sous-requête.
➢ SYNTAXE
SELECT nom_colonne1
FROM `table1`
WHERE EXISTS ( SELECT nom_colonne2
FROM `table2`
WHERE nom_colonne3 = 10
)
Dans l’exemple ci-dessus, s’il y a au moins une ligne dans table2 dont
nom_colonne3 contient la valeur 10, alors la sous-requête retournera au
moins un résultat. Des lors, la condition sera vérifiée et la requête principale
retournera les résultats de la colonne nom_colonne1 de table1. 70
70
Chapitre II : Les Commandes SQL
II.21- UNION
La commande UNION de SQL permet de mettre bout-a-bout les résultats
de plusieurs requêtes utilisant elles-mêmes la commande SELECT. Pour
l’utiliser il est nécessaire que chacune des requêtes a concaténer
retournes le même nombre de colonnes, avec les mêmes types de
données et dans le même ordre.
➢ SYNTAXE
SELECT * FROM table1
UNION
SELECT * FROM table2
➢ EXEMPLE
71
71
Chapitre II : Les Commandes SQL
II.21- UNION
➢ EXMPLE
Table 1
Table 2
72
72
Chapitre II : Les Commandes SQL
II.21- UNION
➢ EXMPLE
SELECT * FROM table1
UNION
SELECT * FROM table2
Note: Pour effectuer une union dans laquelle même les lignes dupliquées
sont affichées il faut plutôt utiliser la commande UNION ALL. 73
73
Chapitre II : Les Commandes SQL
II.22- INTERSECT
La commande SQL INTERSECT permet d’obtenir l’intersection des
résultats de 2 requêtes c’est-à-dire qu’elle permet de récupérer les
enregistrements communs a 2 requêtes.
Pour l’utiliser il est nécessaire que chacune des requêtes retournes le
même nombre de colonnes, avec les mêmes types de données et dans le
même ordre.
➢ SYNTAXE
SELECT * FROM table1
INTERSECT
SELECT * FROM table2
74
74
Chapitre II : Les Commandes SQL
II.24- UPDATE
La commande UPDATE permet d’effectuer des modifications sur des
lignes existantes. Très souvent cette commande est utilisée avec WHERE
pour spécifier sur quelles lignes doivent porter la ou les modifications.
➢ SYNTAXE
UPDATE table
SET nom_colonne_1 = 'nouvelle valeur‘
WHERE condition
77
77
MERCI DE VOTRE
ATTENTION