0% ont trouvé ce document utile (0 vote)
119 vues78 pages

Cours Pratique de SQL L1 23-24

Ce document présente un cours de pratique de SQL pour l'année académique 2023-2024, dirigé par Jeannet Nouo Voudza. Le cours couvre les objectifs, définitions, fonctionnalités de SQL, ainsi que les commandes SQL essentielles comme SELECT, WHERE, ORDER BY, GROUP BY et HAVING. Les dates importantes incluent le début du cours le 29 novembre 2023 et l'examen final le 20 décembre 2023.
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)
119 vues78 pages

Cours Pratique de SQL L1 23-24

Ce document présente un cours de pratique de SQL pour l'année académique 2023-2024, dirigé par Jeannet Nouo Voudza. Le cours couvre les objectifs, définitions, fonctionnalités de SQL, ainsi que les commandes SQL essentielles comme SELECT, WHERE, ORDER BY, GROUP BY et HAVING. Les dates importantes incluent le début du cours le 29 novembre 2023 et l'examen final le 20 décembre 2023.
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

PRATIQUE DE SQL

L1 Math-Info-Stat
2023 – 2024

Par Jeannet NOUO VOUDZA


Ingénieur Informaticien
Chargé de cours
PLAN DU COURS

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

Début : 29 Novembre 2023


Fin : 20 Décembre 2023
Chap. I : La Présentation de SQL
Chap. II : Les Commandes SQL

Travaux Dirigés :(XX)


Travaux Pratiques : 30/11/2023 (R) et 20/12/2023 (V)
Evaluation : 09/11/2023
Examen :20/12/2023

3
Chapitre I
Présentation

4
4
Introduction

5
5
Chapitre I : Présentation

I.1- Objectifs

✓ Créer la structure de la base de données et de ses tables;

✓ Exécuter les tâches de base de la gestion des données,


telle que l’insertion, la modification et la suppression de
données des tables;

✓ Effectuer des requêtes simples ou complexes;

6
6
Chapitre I : Présentation

I.2- Définitions

❖ Qu’est ce qu’une base de données et un SGBD?

Système de
Gestion de
Base de Base de
Données Données

7
7
Chapitre I : Présentation

I.2- Définitions

❖ Qu’est ce qu’une base de données et un SGBD?

- Tables
- Champs
Base de - Enregistrements
données - Contraintes

8
8
Chapitre I : Présentation

I.2- Définitions

❖ Qu’est ce qu’une base de données et un SGBD?

- Tables
- Champs
- Enregistrements
- Contraintes

9
9
Chapitre I : Présentation

I.2- Définitions

❖ Qu’est ce qu’une base de données et un SGBD?

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

SQL est un langage composé de sous ensembles de langage :

➢ LDD : Le Langage de Définition de données pour la


création et la suppression des objets dans la base des
données.
➢ LMD : Le Langage de Manipulation de données pour la
recherche, la l’insertion, la suppression et la mise à jour des
données.

➢ LCD : Le Langage de Contrôle de données pour gérer les


droits sur les objet de la base des données.

11
11
Chapitre I : Présentation

I.3- Fonctionnalités

Moteur SQL Catalogue Exemples:


- MySQL
- Oracle
SGBD - Microsoft SQL Server
- Microsoft Access
Langage des Processeur des - PostGres
requêtes requêtes - Etc…

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

4 On vérifie dans le catalogue


On envoie alors le plan au que l’utilisateur a le droit de
moteur SQL qui va manipuler faire toutes les opérations
les fichiers et faire les nécessaires au plan
traitements nécessaires.
3 d’exécution .
13
13
Chapitre I : Présentation

I.4- Conception de Bases de Données


❖ Modèle Conceptuel des Données (MCD)

14
14
Chapitre I : Présentation

I.4- Conception de Bases de Données


❖ Modèle Logique des Données (MLD)

1. SITE(id_site, coordonnées)

2. SALLE(n_salle, id_site, coordonnées)

3. CANDIDAT(n_inscription, id_site, nom, prénom)

4. MATIERE(code_matière, intitulé)

5. COMPOSE(n_inscription, code_matière, n_salle)

15
15
Chapitre I : Présentation

I.5- Le SGBD MySQL

➢ Lancé à l’origine en 1995. Depuis, il a connu quelques changements de


propriétaire et de gestion, avant de se retrouver chez Oracle Corporation
en 2010.
➢ MySQL est un logiciel open source, ce qui signifie que vous pouvez
l’utiliser et le modifier librement.
➢ Très rependu, Grande communauté d’utilisateur, documentation fournie,
etc…
➢ Multiplateforme, très utilisé dans le monde du Web
16
16
Chapitre II
LES COMMANDES SQL

17
17
Chapitre II : Les Commandes SQL

II.1- SELECT (Projection)


➢ L’utilisation la plus courante de SQL consiste a lire des données
issues de la base de données. Cela s’effectue grâce a la commande
SELECT, qui retourne des enregistrements dans un tableau de
résultat. Cette commande peut sélectionner une ou plusieurs colonnes
d’une table.

➢ SELECT ≪ noms_des_champs ≫
FROM ≪ noms_des_table ≫

18
18
Chapitre II : Les Commandes SQL

II.1- SELECT (Projection)

19
19
Chapitre II : Les Commandes SQL

II.1- SELECT(Projection)
➢ Obtenir plusieurs colonnes
SELECT prenom, nom
FROM client

➢ Obtenir toutes les colonnes


SELECT *
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

➢ Alias sur Table


SELECT * Intérêt
FROM nom_table AS T1 Eviter d’utiliser a chaque fois le nom
des tables. Cette astuce est encore
Ou encore plus pratique lorsqu’il y a des noms
SELECT * de tables encore plus compliques et
FROM nom_table T1 lorsqu’il y a beaucoup de jointures.
22
22
Chapitre II : Les Commandes SQL

II.2- WHERE (Restriction)


➢ La commande WHERE dans une requête SQL permet d’extraire les
lignes d’une base de données qui respectent une condition. Cela permet
d’obtenir uniquement les informations désirées.

➢ 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

Attention : il y a quelques operateurs qui n’existe pas dans des vieilles


versions de système de gestion de bases de données (SGBD). De plus, il y a
de nouveaux operateurs non indiques ici qui sont disponibles avec certains
SGBD. N’hésitez pas a consulter la documentation de MySQL, PostgreSQL
ou autre pour voir ce qu’il vous est possible de faire.
26
26
Chapitre II : Les Commandes SQL

II.3- Exercice d’application


Soient le MCD présenté au tableau et les tables ci-dessous…

Ecrire les requêtes SQL suivantes :


i. Donner la liste des clients
ii. Donner la liste des clients qui ne possède pas de numéro de téléphone
iii. Donner la liste des ventes réalisées en 2005
iv. Donner la liste des ventes réalisées avant 2005
v. Donner la liste des produits et leur prix
27
vi. Donner la liste des clients qui habitent Paris 27
Chapitre II : Les Commandes SQL

II.4- AND & OR (Restriction)


➢ Une requête SQL peut être restreinte a l’aide de la condition WHERE. Les
operateurs logiques AND et OR peuvent être utilisées au sein de la
commande WHERE pour combiner des conditions. Les operateurs sont a
ajoutes dans la condition ils peuvent être combines a l’infini pour filtrer les
données comme souhaites.
➢ Syntaxes:
1-SELECT nom_colonnes 2-SELECT nom_colonnes
FROM nom_table FROM nom_table
WHERE condition1 AND condition2 WHERE condition1 OR condition2

3-SELECT nom_colonnes
FROM nom_table
WHERE condition1 AND (condition2 OR condition3)

28
28
Chapitre II : Les Commandes SQL

II.5- Exercice d’application


Soient le MCD présenté au tableau et les tables ci-dessous…

Ecrire les requêtes SQL suivantes :


i. Donner la liste des clients de PARIS sans numéro de téléphone
ii. Donner la liste des clients qui ne possède pas de numéro de téléphone
et habite MARSEILLE
iii. Donner la liste des ventes réalisées entre le 1er et le 30 Mars 2005
iv. Donner la liste des ventes réalisées en 2005 ou en 2004
v. Donner la liste des produits de marque BMW ou qui ont un prix égale29
1800 29
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:

SELECT colonne1, colonne2


FROM table
ORDER BY colonne1

➢ 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.

SELECT colonne1, colonne2, colonne3


FROM table
ORDER BY colonne1 DESC, colonne2 ASC

Exemple : Ecrire la requête qui retourne la liste des clients par ordre
alphabétique.

31
31
Chapitre II : Les Commandes SQL

II.7- LES FONCTIONS SQL


➢ Les fonctions SQL permettent d’effectuer des requêtes plus élaborées, par
exemple adaptant les résultats pour qu’une chaîne soit affichée en
majuscule ou bien pour enregistrer une chaîne avec la date actuelle.
➢ Exemples de fonctions utiles
a. SUM() calculer la somme d’un set de résultat;
b. MAX() obtenir le résultat maximum (fonctionne bien pour un entier);
c. MIN() obtenir le résultat minimum;
d. COUNT() compter le nombre de lignes dans un résultat;
e. ROUND() arrondir la valeur;
f. UPPER() afficher une chaîne en majuscule;
g. LOWER() afficher une chaîne en minuscule;
h. NOW() date et heure actuelle;
i. RAND() retourner un nombre aléatoire;
j. CONCAT() concaténer des chaînes de caractères;
k. CURRENT_DATE() date actuelle; 32
32
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

A noter : cette commande doit toujours s’utiliser après la


commande WHERE et avant la commande HAVING que nous verrons.
SELECT colonne1, Fonction(colonne2)
FROM table
WHERE Condition1
GROUP BY colonne1
HAVING Condition2 33
33
Chapitre II : Les Commandes SQL

II.8- GROUP BY
➢ Exemple table ACHAT:

➢ Pour obtenir le coût total de dépense de chaque client utilisera la


requête suivante :
SELECT client, SUM(tarif)
FROM achat
GROUP BY client
34
34
Chapitre II : Les Commandes SQL

II.8- GROUP BY
➢ Exemple table ACHAT:
SELECT client, SUM(tarif)
FROM achat
GROUP BY client

➢ La manière simple de comprendre le GROUP BY c’est tout simplement


d’assimiler qu’il va éviter de présenter plusieurs fois les mêmes lignes.
C’est une méthode pour éviter les doublons.

35
35
Chapitre II : Les Commandes SQL

II.8- GROUP BY
➢ Exemple table ACHAT:

SELECT client, SUM(tarif)


FROM 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.

SELECT client, SUM(tarif)


FROM achat
GROUP BY client
HAVING SUM(tarif) > 40

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

➢ La cliente “Marie” a cumulée 38€ d’achat (un achat de 18€ et un autre


de 20€) ce qui est inférieur à la limite de 40€ imposée par HAVING. En
conséquent cette ligne n’est pas affichée dans le résultat. 39
39
Chapitre II : Les Commandes SQL

II.10- CREATE DATABASE


➢ Cette commande permet de créer la base de données. La création
d’une base de données en SQL est possible en ligne de commande.
Même si les systèmes de gestion de base de données (SGBD) sont
souvent utilises pour créer une base.
➢ Syntaxe:
Pour créer une base de données qui sera appelé ≪ La_base ≫ il suffit
d’utiliser la requête suivante qui est très simple :

CREATE DATABASE La_base;

Avec MySQL, si une base de données porte déjà ce nom, la requête


retournera une erreur. Pour éviter d’avoir cette erreur, il convient d’utiliser
la requête suivante pour MySQL :

CREATE DATABASE IF NOT EXISTS La_base; 40


40
Chapitre II : Les Commandes SQL

II.10- CREATE DATABASE


➢ Option : Dans le standard SQL la commande CREATE DATABASE
n’existe normalement pas. En conséquence, il revient de vérifier la
documentation des différents SGBD pour vérifier les syntaxes possibles
pour définir des options.

41
41
Chapitre II : Les Commandes SQL

II.11- DROP DATABASE


➢ En SQL, la commande DROP DATABASE permet de supprimer
totalement une base de données et tout ce qu’elle contient. Cette
commande est a utiliser avec beaucoup d’attention car elle permet de
supprimer tout ce qui est inclus dans une base: les tables, les données,
les index ….
➢ Syntaxe:
Pour supprimer la base de données appelé ≪ La_base ≫ il suffit
d’utiliser la requête suivante qui est très simple :

DROP DATABASE La_base;

Avec MySQL, si la base de données n’existe pas, la requête retournera


une erreur. Pour éviter d’avoir cette erreur, il convient d’utiliser la
requête suivante pour MySQL :
42
DROP DATABASE IF EXISTS La_base; 42
Chapitre II : Les Commandes SQL

II.12- CREATE TABLE


➢ La commande CREATE TABLE permet de créer une table en SQL. Un
tableau est une entité qui est contenu dans une base de données pour
stocker des données ordonnées dans des colonnes. La création d’une table
sert a définir les colonnes et le type de données qui seront contenus dans
chacun des colonne (entier, chaine de caractères, date, valeur binaire …).
➢ Syntaxe:

43
43
Chapitre II : Les Commandes SQL

II.12- CREATE TABLE


➢ Syntaxe:

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

II.13- ALTER TABLE


➢ Cette commande SQL permet de modifier une table existante. Il est ainsi
possible d’ajouter une colonne, d’en supprimer une ou de modifier une
colonne existante, par exemple pour changer le type.
➢ Syntaxe:
ALTER TABLE nom_table
Instructions

✓ Le mot ≪ Instructions ≫ désigne une commande/l’action que l’on


souhaite effectuer : ajouter, supprimer ou modifier une colonne.

❑ Pour Ajouter :
ALTER TABLE nom_table
ADD nom_colonne type_donnees
45
45
Chapitre II : Les Commandes SQL

II.13- ALTER TABLE


➢ Syntaxe:
ALTER TABLE nom_table
Instructions

❑ Pour Ajouter une colonne :


ALTER TABLE nom_table
ADD nom_colonne type_donnees

Exemple:
ALTER TABLE utilisateur
ADD adresse_rue VARCHAR(255)

46
46
Chapitre II : Les Commandes SQL

II.13- ALTER TABLE


➢ Syntaxe:
ALTER TABLE nom_table
Instructions

❑ Pour Supprimer une colonne:


ALTER TABLE nom_table Ou ALTER TABLE nom_table
DROP nom_colonne DROP COLUMN nom_colonne

Exemple:
ALTER TABLE utilisateur
DROP adresse_rue

47
47
Chapitre II : Les Commandes SQL

II.13- ALTER TABLE


➢ Syntaxe:
ALTER TABLE nom_table
Instructions

❑ Pour Modifier une colonne:


ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

❑ Pour Renommer une colonne:


ALTER TABLE nom_table
CHANGE nom_colonne type_donnees

48
48
Chapitre II : Les Commandes SQL

II.14- DROP TABLE


Cette commande SQL permet de supprimer définitivement une table d’une
base de données. Cela supprime en même temps les éventuels index, trigger,
contraintes et permissions associées à cette table.

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

II.15- INSERT INTO


L’insertion de données dans une table s’effectue a l’aide de la commande
INSERT INTO. Cette commande permet au choix d’inclure une seule ligne a la
base existante ou plusieurs lignes d’un coup.
➢ Syntaxe: (Insertion d’une ligne à la fois)
✓ Insérer une ligne en spécifiant toutes les colonnes :
INSERT INTO Nom_Table
VALUES ('valeur 1', 'valeur 2', ...)

Cette syntaxe possède les avantages et inconvénients suivants :


• Obliger de remplir toutes les données, tout en respectant l’ordre des colonnes
• Il n’y a pas le nom de colonne, donc les fautes de frappe sont limitées.
• L’ordre des colonnes doit reste identique sinon certaines valeurs prennent le
risque d’être complétée dans la mauvaise colonne 50
50
Chapitre II : Les Commandes SQL

II.15- INSERT INTO


➢ Syntaxe: (Insertion d’une ligne à la fois)
✓ Insérer une ligne en spécifiant seulement les colonnes souhaitées:
INSERT INTO table
(nom_colonne_1, nom_colonne_2, ...
VALUES ('valeur 1', 'valeur 2', ...)

▪ 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

II.15- INSERT INTO


➢ Syntaxe: (Insertion de plusieurs lignes à la fois)
✓ Insérer une ligne en spécifiant seulement les colonnes souhaitées:
INSERT INTO table
(nom_colonne_1, nom_colonne_2, ...
VALUES (
('valeur 1', 'valeur 2', ...),
('valeur 11', 'valeur 22', ...),
('valeur 111', 'valeur 222', ...),

);
Note: Lorsque le champ a remplir est de type VARCHAR ou TEXT il faut
indiquer le texte entre guillemet simple. En revanche, lorsque la colonne est un
numérique tel que INT ou BIGINT il n’y a pas besoin d’utiliser de guillemet, il
suffit juste d’indiquer le nombre. 52
52
Chapitre II : Les Commandes SQL

II.15- INSERT INTO


➢ Syntaxe: (Insertion de plusieurs lignes à la fois)

✓ Exemple

INSERT INTO client (prenom, nom, ville, age)


VALUES (
('Rebecca', 'Armand', 'Saint-Didier-des-Bois', 24),
('Aimee', 'Hebert', 'Marigny-le-Chatel', 36),
('Marielle', 'Ribeiro', 'Mailleres', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58) );

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.

DELETE FROM utilisateur


WHERE date_inscription < '2012-04-10'

55
55
Chapitre II : Les Commandes SQL

II.17- TRUNCATE TABLE


En SQL, la commande TRUNCATE permet de supprimer toutes les
données d’une table sans supprimer la table en elle-même. En d’autres
mots, cela permet de purger la table. Cette instruction diffère de la
commande DROP qui a pour but de supprimer les données ainsi que la
table qui les contient.

Noter : L’instruction TRUNCATE est semblable a l’instruction DELETE sans


utilisation de WHERE. Parmi les petite différences TRUNCATE est toutefois plus
rapide et utilise moins de ressource.
➢ Syntaxe:
TRUNCATE TABLE Nom_table

Attention : les données de la table ≪ Nom_table ≫ seront perdues une fois


cette requête exécutée.

56
56
Chapitre II : Les Commandes SQL

II.17- DELETE
➢ Exemple: Soit la table Utilisateur ci-dessous.

TRUNCATE TABLE `Utilisateur`

Une fois la requête exécutée, la table ne contiendra plus aucun


enregistrement. En d’autres mots, toutes les lignes du tableau
présente ci-dessus auront été supprimées.

57
57
Chapitre II : Les Commandes SQL
II.18- JOINTURE

✓ Les jointures en SQL permettent d’associer plusieurs tables dans une


même requête. Cela permet d’exploiter la puissance des bases de
données relationnelles pour obtenir des résultats qui combinent les
données de plusieurs tables de manière efficace.

✓ En général, les jointures consistent a associer des lignes de 2 tables en


associant l'égalité des valeurs d’une colonne d’une première table par
rapport a la valeur d’une colonne d’une seconde table.

✓ Imaginons qu’une base de 2 données possède une table ≪ utilisateur ≫ et


une autre table ≪ adresse ≫ qui contient les adresses de ces utilisateurs.
Avec une jointure, il est possible d’obtenir les données de l’utilisateur et de
son adresse en une seule requête.

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

La syntaxe ci-dessus stipule qu’il faut sélectionner les enregistrements


des tables table1 et table2 lorsque les données de la colonne ≪ id ≫
de table1 est égal aux données de la colonne ≪ fk_id ≫ de table2.
59
59
Chapitre II : Les Commandes SQL

II.18- JOINTURE
➢ Types de jointures :
✓ Exemple :

Pour afficher toutes les commandes associées aux utilisateurs, il


est possible d’utiliser la requête suivante : 60
60
Chapitre II : Les Commandes SQL

II.18- JOINTURE
✓ Exemple :

Pour afficher toutes les commandes associées aux utilisateurs, il est


possible d’utiliser la requête suivante :

SELECT id, prenom, nom, date_achat, num_facture, prix_total


FROM utilisateur
INNER JOIN commande ON [Link] = commande.utilisateur_id

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

Cette requête est particulièrement intéressante pour récupérer les


informations de table1 tout en récupérant les données associées, même s’il
n’y a pas de correspondance avec table2. A savoir, s’il n’y a pas de
correspondance les colonnes de table2 vaudront toutes NULL. 62
62
Chapitre II : Les Commandes SQL

II.18- JOINTURE
✓ Exemple :

Pour lister tous les utilisateurs avec leurs commandes et afficher


également les utilisateurs qui n’ont pas effectuées d’achats, il est
possible d’utiliser la requête suivante.

SELECT id, prenom, nom, date_achat, num_facture, prix_total


FROM utilisateur
LEFT JOIN commande ON [Link] = commande.utilisateur_id

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 :

Pour lister tous les utilisateurs avec leurs commandes et afficher


également les utilisateurs qui n’ont pas effectuées d’achats, il est
possible d’utiliser la requête suivante.

SELECT id, prenom, nom, date_achat, num_facture, prix_total


FROM utilisateur
RIGHT JOIN commande ON [Link] = commande.utilisateur_id

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

II.19- SOUS REQUETE


✓ Dans le langage SQL une sous-requête (aussi appelé ≪ requête
imbriquée ≫ ou ≪ requête en cascade ≫) consiste a exécuter une
requête a l’intérieur d’une autre requête. Une requête imbriquée est
souvent utilisée au sein d’une clause WHERE ou de HAVING pou
remplacer une ou plusieurs constante.

➢ 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

II.19- SOUS REQUETE


➢ SYNTAXES

o Requête imbriquée qui retourne une colonne


SELECT *
FROM `table`
WHERE `nom_colonne` IN (
SELECT `colonne`
FROM `table2`
LIMIT 1
)

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.23- EXCEPT / MINUS


Dans le langage SQL la commande EXCEPT s’utilise entre 2 instructions
pour récupérer les enregistrements de la première requête qui ne figure
pas dans les résultats de la seconde requête.
➢ SYNTAXE
SELECT * FROM table1
EXCEPT
SELECT * FROM table2

Note : Cette commande s’appelle différemment selon les Systèmes de


Gestion de Base de Données (SGBD) :
• EXCEPT : PostgreSQL
• MINUS : MySQL et Oracle
75
75
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

Note : Cette syntaxe permet d’attribuer une nouvelle valeur a la colonne


nom_colonne_1 pour les lignes qui respectent la condition stipule avec
WHERE. Il est aussi possible d’attribuer la même valeur a la colonne
nom_colonne_1 pour toutes les lignes d’une table si la condition WHERE
n’était pas utilisée.
76
76
Chapitre III :
Les Travaux Dirigés

77
77
MERCI DE VOTRE
ATTENTION

Vous aimerez peut-être aussi