0% ont trouvé ce document utile (0 vote)
27 vues82 pages

SQL S Q L: Le Langage

Le langage SQL (Structured Query Language) est utilisé pour interroger et manipuler des bases de données relationnelles. Il comprend plusieurs catégories de commandes telles que DQL pour l'interrogation, DDL pour la définition, DML pour la manipulation, et DCL pour le contrôle des données. Les requêtes peuvent inclure des projections, des sélections, des jointures, et des clauses pour filtrer et organiser les résultats.

Transféré par

simoatir29
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)
27 vues82 pages

SQL S Q L: Le Langage

Le langage SQL (Structured Query Language) est utilisé pour interroger et manipuler des bases de données relationnelles. Il comprend plusieurs catégories de commandes telles que DQL pour l'interrogation, DDL pour la définition, DML pour la manipulation, et DCL pour le contrôle des données. Les requêtes peuvent inclure des projections, des sélections, des jointures, et des clauses pour filtrer et organiser les résultats.

Transféré par

simoatir29
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

Le langage SQL

« Structured Query Language »

1
[email protected] Langage SQL
I. Introduction
1. Définition
II. Requêtes d’interrogation : DQL
2. Notion de requête
III. Requêtes de manipulation de données : DML
3. Fonctionnalités de SQL
IV. Requêtes de définition de données : DDL

• Le langage SQL(Structured Query Language) est un


langage qui permet l’interrogation des bases de
données relationnelles.
• Le langage est utilisé actuellement par la plupart des
SGBD relationnels pour toutes les interactions avec la
base de données.

2
I. Introduction
1. Définition
II. Requêtes d’interrogation : DQL
2. Notion de requête
III. Requêtes de manipulation de données : DML
3. Fonctionnalités de SQL
IV. Requêtes de définition de données : DDL

• Une requête consiste à interroger une base de données.


• C’est une question formulée avec un langage adéquat pour
laquelle on attend une réponse (résultat de la requête).

3
I. Introduction
1. Définition
II. Requêtes d’interrogation : DQL
2. Notion de requête
III. Requêtes de manipulation de données : DML
3. Fonctionnalités de SQL
IV. Requêtes de définition de données : DDL

Parmi les différentes fonctionnalités SQL, il est possible de


retrouver les catégories de commandes suivantes :
• DQL (Data Query Language) qui permet l'interrogation de la base de données relationnelle
(rechercher des données dans une table) .

• DDL (Data Définition Language) qui permet de définir et de modifier le schéma d'une base
de données relationnelle (création, modification de schéma) .

• DML (Data Manipulation Language) qui permet la modification d'une base de données
relationnelle (ajout, suppression ou mise à jour).

• DCL (Data Contrôle Language) pour contrôler la sécurité et l'intégrité de la base de données
relationnelle.

4
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

• La requête peut être réalisée en faisant appel à une ou à


plusieurs tables. Elle peut se référer à une partie ou à la totalité
des colonnes des tables concernées.

• Une recherche peut consister à effectuer :


-Une projection sur certaines colonnes d'une table
-Une Sélection sur certaines lignes d'une table
-Une jointure sur deux tables
-Toute combinaison de projection, Sélection et jointure.

5
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

Exemple: soit le schéma relationnel suivant


CLIENT
COMMANDE DetailsCommande PRODUIT
NumCli
NomCli NumCde #NumCde RefProd
VilleCli DateCmd #RefProd Désignation
CodPost #NumCli Quantité PU
Tel

• Client (NumCli, NomCli, VilleCli, CodPost, Tel)


• Commande (NumCde, DateCde, #NumCli)
• DetailsCommande(#NumCde, #RefProd, Quantité)
• Produit (RefProd, Désignation, PU)

6
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

• Une requête simple, ou autrement appelée une projection, sert à


sélectionner un ensemble d'attributs dans une table.
• Sa syntaxe est :
Syntaxe
SELECT liste des attributs (colonnes)
FROM liste des tables ;

7
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

• Affichage des numéros client provenant de la table Client


SELECT NumCli
FROM Client
• Affichage des attributs: NomCli, VilleCli et Tel
uniquement

SELECT NomCli, VilleCli, Tel


FROM Client

8
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

Si l’on souhaite récupérer tous les champs d’une table il


est avantageux d’utiliser le caractère : * (l’étoile).

• Liste des Produits( RefProd, Designation, PU)


SELECT *

FROM Produit

9
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

Requête avec la clause "ORDER BY"


Cette clause sert à classer par ordre croissant ou décroissant le
résultat d'une requête. Par défaut il tri par ordre croissant. Les
extensions « ASC » et « DESC » indiquent respectivement si le tri est
croissant ou décroissant.
Exemple 1: Exemple 2:
La liste des clients classés par La Liste des clients classés par
ordre alphabétique croissant de ordre décroissant de leur Numéro
leur Nom: SELECT *
SELECT * FROM Client
FROM Client ORDER BY numCli DESC ;
ORDER BY nomCli ASC ;
(à noter que le « ASC » n'est pas obligatoire ici car il est
mis par défaut)
10
1. Définition
I. Introduction 2. Projection
II. Requêtes d’interrogation : DQL 3. Sélection
III. Requêtes de manipulation de données : DML 4. Jointure
IV. Requêtes de définition de données : DDL 5. Regroupement
6. Sous-requêtes

Clause DISTINCT
• On veut avoir les villes des clients et les codes postales
correspondants:

SELECT VilleCli, CodPost


FROM Client

Doublon

11
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause DISTINCT

SELECT DISTINCT VilleCli, CodPost


FROM Client

Pas de doublon

12
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Sélection
• La Sélection permet d’extraire les lignes d’une table qui
vérifient une certaine condition .
• Elle s’exprime grâce à la clause WHERE.
Syntaxe
SELECT liste des attributs (colonnes)
FROM liste des tables
WHERE condition;

13
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

• Les prédicats de sélection:


1. Opérateurs de comparaison : =, >, >=, <, <=, <>
2. Liste de valeurs : IN (…), NOT IN (...)
3. Comparaison des chaînes de caractères : LIKE
4. Intervalle de valeurs : BETWEEN, NOT BETWEEN
5. Connecteurs logiques : AND, OR
6. Inverser une condition : NOT
7. Tester les valeurs non renseignées : IS NULL, IS NOT NULL

14
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Exemple 1:
Liste des clients de la ville d’ El Jadida:

SELECT *

FROM Client

WHERE VilleCli= "El Jadida";

15
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Exemple 2:
La liste des clients (NomCli, CodPost, Tel) de la ville de El
Jadida classés suivant le Code postal (tri croissant):
SELECT NomCli, CodPost, Tel

FROM Client

WHERE VilleCli="El JAdida"

ORDER BY CodPost;

16
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « LIKE »


La liste des noms des clients qui commencent par la
lettre M:

SELECT nomCli
FROM Client

WHERE nomCli LIKE "M%";

17
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « LIKE »


La liste des clients (nom et téléphone) dont le nom se
termine par les lettres "ID" :
SELECT NomCli, Tel

FROM Client

WHERE NomCli LIKE "%ID" ;

18
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « LIKE »


La liste des clients (nom et téléphone) dont la 2ème
lettre du nom est un "A":
SELECT NomCli, Tel

FROM Client

WHERE NomCli LIKE "_A%" ;

" _" = un caractère quelconque "%"= une chaîne quelconque

19
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « OR »


Liste des Clients de Casablanca OU d’El Jadida:

SELECT *

FROM Client

WHERE VilleCli="Casablanca" OR VilleCli="El Jadida";

20
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « AND »


Liste des Clients de El Jadida avec CodPost=24000

SELECT *

FROM Client

WHERE VilleCli="El Jadida" AND CodPost=24000;

21
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « BETWEEN »


La liste des commandes (numéro, date) passées du 21 au
26 Décembre 2024:

SELECT numCde

FROM Commande

WHERE dateCde BETWEEN ‘2024-12-21’ AND ‘2024-12-26’;

22
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « IN »


Le nom du client N°2 avec son code postal, ainsi que le
nom du client N° 7 avec son CP

SELECT NomCli, Codpost

FROM Client

WHERE NumCli IN (2 , 7);

23
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause WHERE avec l’opérateur « IS NULL »


La liste les clients (numéro, nom) dont le numéro téléphone
n’a pas été saisi:

SELECT NumCli, NomCli

FROM Client

WHERE Tel IS NULL ;

24
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Utilisation de UNION
Requête qui fusionne la liste des clients ayant passé une
commande avec ceux habitant à ELJadida, sans doublons:
SELECT NumCli
FROM Commande
UNION
SELECT NumCli
FROM Client
WHERE VilleCli = "El Jadida";
Affiche les numéros des clients qui ont passé
des commandes ou qui habitent à " El Jadida ".
25
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Utilisation de INTERSECT

SELECT NumCli
FROM Commande
INTERSECT
SELECT NumCli
FROM Client
WHERE VilleCli = "El Jadida";

Affiche les numéros des clients qui ont passé


des commandes et qui habitent à " El Jadida ".

26
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Utilisation de MINUS ou EXECPT


SELECT NumCli SELECT NumCli
FROM Client FROM Client
WHERE VilleCli = 'El Jadida' WHERE VilleCli = 'El Jadida’
MINUS EXCEPT
SELECT NumCli SELECT NumCli
FROM Commande; FROM Commande;

Afficher les numéros des clients qui habitent à


"El Jadida" mais n'ont jamais passé de
commande.

27
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction sur les dates

Date() renvoie la date du jour

Month(date) renvoie le mois d’un champ de type date

Year(date) renvoie l’année d’un champ de type date

Day(date) renvoie le jour d’un champ de type date

28
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction sur les dates


Exemple: Liste des commandes passées aujourd’hui

SELECT *
FROM Commande
WHERE dateCde = date() ;

29
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction sur les dates


Exemple: Liste des commandes passées en 2024

SELECT *
FROM Commande
WHERE year(dateCde) = 2024 ;

30
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction sur les dates


Exemple: Liste des commandes passées le mois en cours

SELECT *
FROM Commande
WHERE month(dateCde) = month(date()) ;

31
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La jointure :
• La jointure : c’est la mise en correspondance de 2 tables
selon un critère.

• La jointure permet de lier des tables en faisant correspondre


clés étrangères (PK) et clés primaires (FK) .

32
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

• Syntaxe:
SELECT liste des colonnes
FROM table1, table2
WHERE table1.cléprimaire = table2.cléétrangère;
• Ou:
SELECT liste des colonnes
FROM table1 JOIN table2
ON table1.cléprimaire = table2.cléétrangère;

33
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

CLIENT
COMMANDE DetailsCommande PRODUIT
NumCli
NomCli NumCde #NumCde RefProd
VilleCli DateCmd #RefProd Désignation
CodPost #NumCli Quantité PU
Tel

Afficher les noms des clients et les numéros des


commandes correspondantes:
SELECT nomCli, numCde
FROM Client, Commande
WHERE Client.numCli=Commande.numCli;
Ou:
SELECT nomCli, numCde
FROM Client JOIN Commande ON Client.numCli=Commande.numCli;

34
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

• ETUDIANT(N°Etudiant, Nom, Prénom,ville)


MATIERE(CodeMat, LibelléMat, CoeffMat)
EVALUER(#N°Etudiant,#CodeMat, Date, Note)

ETUDIANT EVALUER MATIERE


N°Etudiant #N°Etudiant CodeMat
Nom #CodeMat LibelléMat
Prénom Date CoeffMat
Ville Note

35
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Remarque:
• Lorsqu'on utilise plusieurs tables, il faut faire attention
que deux tables n'aient pas de champs ayant le même
nom, si c'est le cas, et pour les différencier, on utilise,
comme dans l'exemple précédent, la notation:
Table.NomDuChamp
• Si le nom du champ ne se retrouve pas dans plusieurs
tables, on peut l'utiliser sans le préfixer avec le nom de
la table.

36
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Afficher les noms des clients d’ El Jadida et les numéros


des factures correspondantes:
SELECT nomCli, numCde

FROM Client, Commande

WHERE Client.numCli= Commande.numCli AND villeCli="El Jadida";

SELECT nomCli, numCde

FROM Client JOIN Commande ON Client.numCli= Commande.numCli

WHERE villeCli="El Jadida";

37
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

• Afficher Nom et Tel du client qui a passé la commande n° 11:


SELECT nomCli, Tel

FROM Client, Commande

WHERE Client.numCli= Commande.numCli AND numCde=11;

SELECT nomCli, Tel

FROM Client JOIN Commande ON Client.numCli= Commande.numCli

WHERE numCde=11;

38
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Afficher les désignation des produits, ainsi que les quantités


commandées pour la commande du 23/12/2024.

SELECT designation, Quantité

FROM Produit, DetailsCommande, Commande

WHERE Produit.Refprod=DetailsCommande.Refprod

AND Commande.numCde=DetailsCommande.numCde

AND dateCde= ‘2024-12-23’;

39
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Clause AS : Définition d’un alias(renommer)


 Les deux requêtes suivantes sont équivalentes:

SELECT Client.numCli, nomCli, Tel, numCde, dateCde


FROM Client, Commande
WHERE Client.numCli=Commande.numCli;

SELECT Cl.numCli, nomCli, Tel, numCde, dateCde


FROM Client AS Cl, Commande AS Co
WHERE Cl.numCli=Co.numCli;
40
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

• Opérateurs arithmétiques:
Certaines requêtes ont besoin de faire des calculs. Pour cela,
il est possible d'utiliser les quatre opérateurs arithmétiques
(+, -, /, *) en combinant des noms de champ et/ou des
chiffres.
• Exemple:
SELECT PU*1.2 AS [Prix TTC]

FROM Produit

WHERE RefProd=P01;
41
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

SQL offre cinq (5) fonctions statistiques appelées


« fonctions agrégats »:
COUNT (*) Le nombre de lignes d’une table
MAX(colonne) La valeur maximale de la colonne citée
MIN(colonne) La valeur minimale de la colonne citée
La somme de toutes les valeurs d’une colonne
SUM(colonne)
dont le type de données est numérique.
AVG (colonne) La moyenne (average) de toutes les valeurs
numériques d’une colonne.

42
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction MIN( )
Prix du produit le moins cher (afficher uniquement cette
donnée)

SELECT MIN(PU) AS [Prix du produit le moins cher]

FROM Produit;

43
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction MAX( )
Prix du produit le plus cher:

SELECT MAX(PU) AS [Prix du produit le plus cher]

FROM Produit;

44
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction COUNT( )
Nombre de clients de la ville d’Agadir:

SELECT COUNT(*) AS [Nombre de clients d’Agadir]

FROM Client

WHERE villeCli="Agadir";

45
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction AVG( )
Prix moyen de l'ensemble des produits:

SELECT AVG (PU) AS [moyenne des prix]

FROM Produit ;

46
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction SUM( )
Montant total HT de la commande N° 7:

SELECT SUM(Quantité*PU) AS [total HT]

FROM DetailsCommande, Produit

WHERE DetailsCommande.refprod= Produit.refprod

AND numCde=7;

47
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Fonction COUNT( )
Le plus souvent, on souhaite grouper les résultats d’une requête
par catégorie pour faire des traitements sur ces catégories.
Supposons par exemple que l’utilisateur exécute la requête
suivante:

SELECT COUNT(*)

FROM Client;
Cette requête donne le nombre total des clients
enregistrés dans la table Client.

48
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause GROUP BY
• Exemple: Nous voulons obtenir pour chaque ville le
nombre de clients correspondant. La requête est alors:

SELECT villeCli , COUNT(*) AS [Nbre Clients par ville]

FROM Client

GROUP BY villeCli ;

La clause GROUP BY permet le regroupement ou partitionnement du


résultat d’une requête en fonction d’une ou plusieurs rubriques faisant
parties du SELECT.
49
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause GROUP BY
• Exemple: Combien de commandes ont été passées par
chaque client? (Nombre de commandes par client)

SELECT numCli, count(*) AS [Nbre Cmdes par Client]

FROM Commande

GROUP BY numCli;

50
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause GROUP BY
• Exemple : Montant total HT de chaque commande

SELECT numCde, SUM(Quantité*PU) AS [total HT]

FROM DetailsCommande, Produit

WHERE DetailsCommande.refprod= Produit.refprod

GROUP BY numCde;

51
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Les regroupements avec Sélection


• Supposons que l’utilisateur désire lister les factures dont le
nombre de produits est >=3 .
• Il se doit donc utiliser la condition COUNT (*)>=3 avec un
regroupement sur « numCde ». Nous aurions la requête
suivante :
SELECT numCde, COUNT(*)
FROM DetailsCommande
WHERE COUNT(*)>=3
GROUP BY numCde;
Cette requête contient une erreur de syntaxe : la condition
de la clause WHERE ne peut en aucun cas inclure des
fonctions agrégats 52
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause HAVING

La clause HAVING permet de mettre une


condition sur les fonctions agrégats. La clause
WHERE ne permet pas d’effectuer une telle
condition.

53
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause HAVING
• La clause HAVING permet une Sélection sur un groupe de ligne. Elle
est liée à la clause GROUP BY
Remarque : HAVING est toujours associé au GROUP BY
• Requête précédente :
SELECT numCde, COUNT(*)

FROM DetailsCommande

GROUP BY numCde

HAVING COUNT(*)>=3;

54
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause HAVING
• Liste des clients (NumCli) qui ont passé au moins deux
commandes .
SELECT numCli, count(*)

FROM Commande

GROUP BY numCli

HAVING COUNT(*) >= 2;

55
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

La clause HAVING
• Les commandes dont le montant total HT dépasse 10000 DH
SELECT numCde, SUM(Quantité*PU) AS [total HT]

FROM DetailsCommande, Produit

WHERE DetailsCommande.refprod= Produit.refprod

GROUP BY numCde

HAVING SUM(Quantité*PU)>10000;
56
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Syntaxe générale d’une requête


SELECT . . .
FROM . . .
[ WHERE . . . ]
[ GROUP BY . . . ]
[ HAVING . . . ]
[ ORDER BY . . .]

57
I- Requêtes d’interrogation
1. PROJECTION
2. Sélection
3. JOINTURE
4. REGROUPEMENT
5. SOUS-REQUÊTES
58
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Requêtes Imbriquées
• Une sous-requête est une requête dont le résultat est
utilisé par une autre requête.
• Par exemple, vous voulez sélectionner les commandes
dont le montant est supérieur au montant moyen des
commandes. Le montant moyen des commandes n'est
pas connu directement. Ce montant moyen va être
retourné par une autre requête (appelée ici sous-
requête).

59
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Exemple 1: Sous-requêtes renvoyant une seule valeur


Liste des produits (ref, design, pu) dont le prix est
supérieur à la moyenne des prix:

SELECT Refprod, Designation, PU


FROM Produit

WHERE PU > (SELECT AVG(PU)

FROM Produit);
60
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Exemple 2: Sous-requêtes renvoyant une seule valeur


Le produit (ref, design, pu) le plus cher:

SELECT RefProd, Désignation, PU


FROM Produit

WHERE PU = (SELECT MAX(PU)

FROM Produit);
61
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Sous-requêtes renvoyant une liste de valeurs


Opérateurs

IN Teste si un élément est présent dans


la liste de valeurs résultat d'une sous-requête.

NOT IN Teste si un élément n’est pas présent dans


la liste de valeurs résultat d'une sous-requête.

62
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Sous-requêtes renvoyant une liste de valeurs


• Les commandes ( NumCde, dateCde) passées par les
clients d’Agadir.

SELECT numCde, dateCde

FROM COMMANDE

WHERE numCli IN (SELECT numCli


FROM CLIENT

WHERE villeCli = “Agadir”);


63
1. Définition
2. Projection
I. Introduction 3. Sélection
II. Requêtes d’interrogation : DQL 4. Jointure
III. Requêtes de manipulation de données : DML 5. Champs calculés
IV. Requêtes de définition de données : DDL 6. Fonctions Agrégats
7. Regroupement
8. Sous-requêtes

Sous-requêtes renvoyant une liste de valeurs


⚫ Liste des références des produits n’ayant jamais fait
l’objet d’une facture .
SELECT RefProd
FROM produit

WHERE RefProd NOT IN (SELECT DISTINCT RefProd

FROM DetailsCommande);

64
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

1. Insertion des données


L’ instruction INSERT est utilisée pour insérer des données dans
une table.

Syntaxe:
INSERT INTO nom-TABLE VALUES ( 'valeur1 ', 'valeur2', …) ;
OU
INSERT INTO nom-TABLE(col1,col2,….) VALUES ( 'valeur1‘,
'valeur2‘,…) ;

65
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 1:
• On souhaite insérer un nouveau client en précisant toutes
ses informations:

INSERT INTO Client VALUES (211, "Ibrahimi", "El

Jadida", 24000, "0612345678");

Avec cette instruction, les valeurs insérées correspondent


respectivement aux champs (colonnes) de la table Client dans
l’ordre: la valeur 211 correspond à NumCli, "Ibrahimi" correspond à
NomCli et ainsi de suite.
66
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 2:
• On souhaite insérer un nouveau client pour lequel on ne dispose
que de valeurs relatives à certaines colonnes de cette table. Ces
colonnes sont : code client, son nom et sa ville . Dans ce cas on
doit donner les colonnes, qui sont concernées, dans le même
ordre que ces valeurs. La commande SQL sera alors la suivante :
INSERT INTO Client (NumCli, NomCli, VilleCli)
VALUES (211, "Ibrahimi", "El Jadida");
• Les colonnes, de la table Client, qui sont absentes recevront la
valeur NULL (vide) au moment de l'insertion de la ligne.
67
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 3 :
• Considérons les deux tables:
Client (numCli, nomCli, villeCli, codpost, Tel)
ClientFidèle (numCli, nomCli, Tel)
• Ajouter tous les clients d’ El Jadida dans la table des clients fidèles :
INSERT INTO ClientFidèle
SELECT numCli, nomCli, Tel
FROM Client
WHERE villeCli="El Jadida";
68
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

L’instruction DELETE
• Utilisée pour supprimer une ou plusieurs lignes
existantes à partir d'une table.
Syntaxe :
DELETE champs
FROM nom_de_la_table ;
WHERE condition;
Le mot clé WHERE permet d’exprimer les critères de sélection
des lignes à supprimer( cette partie est optionnelle).
69
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

• Supprimer l’article ayant la référence 32. La requête SQL


permettant de répondre à la question est la suivante :

Exemple 1 :
DELETE FROM Produit
WHERE RefProd=32;
• Destruction de tous les articles dont la désignation
commence par "EM":
Exemple 2 :
DELETE FROM Produit
WHERE Designation LIKE "EM*";

70
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 3 : Exemple 4 :
DELETE Numcli DELETE *
FROM Client; FROM Client;
WHERE VilleCli like "RABAT";

Exemple 5 :
DELETE *
FROM Commande;

71
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

L’instruction UPDATE
• Il est parfois nécessaire de modifier des données déjà stockées
dans une table. Pour cela, on utilise l’instruction UPDATE:
• Syntaxe :
UPDATE Table
SET nom_col1 = expression1 , nom_col2 = expression2,...
WHERE condition;
• Les valeurs des colonnes identifiées par nom_col1, nom_col2, …,
sont modifiées dans toutes les lignes qui vérifient la condition de la
clause WHERE. En cas ou cette dernière est absente, toutes les lignes
de la table sont mises à jour.

72
I. Introduction
II. Requêtes d’interrogation : DQL 1. Insertion
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

UPDATE :Exemples
• Le client ayant le code 4110 a changé son ancien numéro de
téléphone par « 05 67 00 11 22 »:
UPDATE Client
SET Tel= "0567001122"
WHERE NumCli=4110;
• Les prix unitaires de tous les produits sont augmentés de 5 %:
UPDATE Produit

SET PU = PU*(1+0.05);

73
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Modification
III. Requêtes de manipulation de données : DML 3. Suppression
IV. Requêtes de définition de données : DDL

SQL permet d'utiliser trois commandes


principales pour la gestion des tables :
➢ CREATE

➢ ALTER TABLE

➢ DROP

74
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

1. Création d’une table


Syntaxe générale
Create table nom_table
(
nom_colonne_1 type_données_1 [contrainte],
nom_colonne_2 type_données_2 [contrainte],

nom_colonne_n type_données_n [contrainte]
);

75
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Type de données:
• INTEGER : un entier signé
• REAL : une valeur à virgule flottante
• TEXT : une chaîne de caractères
• NUMERIC : numérique
• DATE/DATETIME : date/date et heure

Les contraintes définies par SQL sont les suivantes:


• NOT NULL
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
• DEFAULT

76
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 1:
CREATE TABLE Etudiant (
Num_etudiant INTEGER NOT NULL PRIMARY KEY
AUTOINCREMENT UNIQUE,
nom TEXT,
ville TEXT);
Résultat de la requête:
Num_etudiant nom ville

77
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple 2:
CREATE TABLE Etudiant (
Num_etudiant INTEGER NOT NULL AUTOINCREMENT
UNIQUE,
nom TEXT,
ville TEXT,
PRIMARY KEY(Numero_étudiant)
);

78
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

2. La suppression d ’une table


L'instruction DROP est utilisée pour supprimer une table
d'une base de données.

Syntaxe :
Drop table Etudiant;
Ou
Drop table if exists Etudiant;

79
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

Exemple :
Drop table nom_de_la_table ;
Ou
Drop table if exists nom_de_la_table ;

80
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

3. Modification d’une table

SQL donne la possibilité à l’utilisateur de modifier la


structure d’une(es) table(s) déjà créée.

81
I. Introduction
II. Requêtes d’interrogation : DQL 1. Création
2. Suppression
III. Requêtes de manipulation de données : DML 3. Modification
IV. Requêtes de définition de données : DDL

• Renommer une table:


ALTER TABLE Etudiants RENAME TO Etudiants_1;
• Ajouter une nouvelle colonne à la table:
ALTER TABLE Etudiants_1 ADD COLUMN Prenom INTEGER;
• Modifier les propriétés d’un attribut d’une table:
ALTER TABLE Etudiants_1 ALTER COLUMN Prenom TEXT;
• Supprimer un attribut d’une table.
ALTER TABLE Etudiants_1 DROP Prenom;
• Renommer une colonne:
ALTER TABLE Etudiants_1 RENAME COLUMN “Num_etudiant"
TO “N_etudiant" ;
82

Vous aimerez peut-être aussi