Vous êtes sur la page 1sur 237

Chapitre 4: Langage SQL

Mohammed KHALIL

1/184

Mohammed KHALIL Chapitre 4: Langage SQL


Démarche de conception

2/184

Mohammed KHALIL Chapitre 4: Langage SQL


SGBD

Logiciel permettant l’utilisation efficace des Bases de Données.


Avantages:
Stockage persistant sur disque
Très gros volumes de données
Langage de requêtes et langages de programmation SGBD
Contexte multi-utilisateurs

3/184

Mohammed KHALIL Chapitre 4: Langage SQL


Architecture SGBD

4/184

Mohammed KHALIL Chapitre 4: Langage SQL


Approche centralisée

5/184

Mohammed KHALIL Chapitre 4: Langage SQL


Approche client/serveur

6/184

Mohammed KHALIL Chapitre 4: Langage SQL


Données

Une structure
Simple: prix, nom, date
Complexe: personne, document, image
Une sémantique
Le solde d’un compte courant
Une photo de Rabat réalisée par le satellite X

7/184

Mohammed KHALIL Chapitre 4: Langage SQL


Données

Une structure
Simple: prix, nom, date
Complexe: personne, document, image
Une sémantique
Le solde d’un compte courant
Une photo de Rabat réalisée par le satellite X

7/184

Mohammed KHALIL Chapitre 4: Langage SQL


Données

Des utilisateurs:
Interrogent les données:
Quelle était la température à Mohammedia le 1er janvier
2013 ?
Mettent à jour les données.
Créditer le compte de M. Karim de 1000 DHs.
Un propriétaire:
Responsable de la création d’une donnée.
Définit les règles pour son identification et son intégrité:
La température de l’air est comprise entre -30◦ et +40◦ C.
Le salaire de l’année n est supérieur au salaire de l’année
n-1.
Accorde des droits d’utilisation. 8/184

Mohammed KHALIL Chapitre 4: Langage SQL


Données

Des utilisateurs:
Interrogent les données:
Quelle était la température à Mohammedia le 1er janvier
2013 ?
Mettent à jour les données.
Créditer le compte de M. Karim de 1000 DHs.
Un propriétaire:
Responsable de la création d’une donnée.
Définit les règles pour son identification et son intégrité:
La température de l’air est comprise entre -30◦ et +40◦ C.
Le salaire de l’année n est supérieur au salaire de l’année
n-1.
Accorde des droits d’utilisation. 8/184

Mohammed KHALIL Chapitre 4: Langage SQL


Plate-forme développement web : WampServer

9/184

Mohammed KHALIL Chapitre 4: Langage SQL


Programmes Wamp

10/184

Mohammed KHALIL Chapitre 4: Langage SQL


Site web statique

11/184

Mohammed KHALIL Chapitre 4: Langage SQL


Site web dynamique

12/184

Mohammed KHALIL Chapitre 4: Langage SQL


PhpMyAdmin (1)

13/184

Mohammed KHALIL Chapitre 4: Langage SQL


PhpMyAdmin (2)

14/184

Mohammed KHALIL Chapitre 4: Langage SQL


PhpMyAdmin (3)

15/184

Mohammed KHALIL Chapitre 4: Langage SQL


PhpMyAdmin (4)

16/184

Mohammed KHALIL Chapitre 4: Langage SQL


Mysql

17/184

Mohammed KHALIL Chapitre 4: Langage SQL


Base de données étudiée

Soit la base de données définie par le modèle relationnel


suivant:

CLIENT (numcli, nomcli, ville, categorie, compte)


COMMANDE (numcom, numcli, datecom)
PRODUIT (numpro, nompro, prix, qstock)
DETAIL (numcom, numpro, qcom)

18/184

Mohammed KHALIL Chapitre 4: Langage SQL


Tables de la base de données

19/184

Mohammed KHALIL Chapitre 4: Langage SQL


Tables de la base de données

20/184

Mohammed KHALIL Chapitre 4: Langage SQL


Entiers

21/184

Mohammed KHALIL Chapitre 4: Langage SQL


Réels

22/184

Mohammed KHALIL Chapitre 4: Langage SQL


Chaînes de caractères

23/184

Mohammed KHALIL Chapitre 4: Langage SQL


Chaînes de caractères

24/184

Mohammed KHALIL Chapitre 4: Langage SQL


Date

25/184

Mohammed KHALIL Chapitre 4: Langage SQL


Contexte général

Le SGBD permet la manipulation de la structure de la base de données.


Le SGBD offre 3 langages:
LDD: Langage de définition de données
LMD: Langage de manipulation de données
LID: Langage d’interrogation de données
Plusieurs SGBDs: MySql, Oracle, Microsoft SQL, ...
Langage SQL

26/184

Mohammed KHALIL Chapitre 4: Langage SQL


Architecture SGBD

27/184

Mohammed KHALIL Chapitre 4: Langage SQL


Création d’une base de données

Voici 4 commandes SQL très utilisées:


Créer la base de données
CREATE DATABASE NOMBASE ;
Utiliser ensuite cette base de données, pour y créer des tables.
Use nombase;
Afficher les tables de la base de données utilisée
Show tables;
Afficher le détail des colonnes de la table nom_table.
Describe nom_table;

28/184

Mohammed KHALIL Chapitre 4: Langage SQL


Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

29/184

Mohammed KHALIL Chapitre 4: Langage SQL


Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

29/184

Mohammed KHALIL Chapitre 4: Langage SQL


Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

29/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Création d’une table

Une table est un ensemble de lignes et de colonnes.


A la création, il faut indiquer le nom et le type de chaque colonne
de la table.

Syntaxe
CREATE TABLE nom_table (
nom_col1 type1,
nom_col2 type2,
...);

30/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création de la base de données

Créer une base de données appelée BD_ACHAT.


Create database BD_ACHAT;
Utiliser cette base de données, pour y créer des tables.
Use BD_ACHAT;

31/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création de la base de données

Créer une base de données appelée BD_ACHAT.


Create database BD_ACHAT;
Utiliser cette base de données, pour y créer des tables.
Use BD_ACHAT;

31/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création de la base de données

Créer une base de données appelée BD_ACHAT.


Create database BD_ACHAT;
Utiliser cette base de données, pour y créer des tables.
Use BD_ACHAT;

31/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création de la base de données

Créer une base de données appelée BD_ACHAT.


Create database BD_ACHAT;
Utiliser cette base de données, pour y créer des tables.
Use BD_ACHAT;

31/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création des tables


Créer la table CLIENT (numcli, nomcli, ville, categorie,
compte).

32/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création des tables

Création de la table CLIENT


Create table CLIENT (
NumCLI int,
NOMCli varchar(12),
ViLLE varchar(12),
CATEGORIE char(1),
COMPTE decimal (9,2));

33/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Contraintes d’intégrité

not NULL ou NULL: Interdit ou autorise l’insertion de valeur


NULL pour cet attribut.
unique : Désigne l’attribut comme clé secondaire de la table.
primary key : Désigne l’attribut comme clé primaire de la table.
foreign key (colonne) references table [(colonne)] :
Contrainte d’intégrité référentielle (Clé étrangère) pour un
attribut de la table en cours de définition.
check (condition) : Vérifie lors de l’insertion des données que
l’attribut vérifie la condition.
default valeur : Permet de spécifier la valeur par défaut de
l’attribut.
34/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: définir les contraintes d’intégrité

Créer la table CLIENT (numcli, nomcli, ville, categorie,


compte).
Définir sa clé primaire.
Les noms et prénoms des clients doivent être non nuls.
La clé primaire incrémentée automatiquement.

35/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création des tables

Création de la table CLIENT


Create table CLIENT (
NumCLI int not null auto_increment,
NOMCli varchar(12) not null,
ViLLE varchar(12) not null,
CATEGORIE char(1),
COMPTE decimal (9,2),
Constraint pk_cl_ncli primary key(NUMCLI));

36/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Ajout d’une contrainte de table

Syntaxe
ALTER TABLE nom_table
ADD Constraint nom_contrainte contrainte;

Exemple
Alter table commande
Add constraint fk_cm_ncli foreign key (NUMCLI) references CLIENT
(NUMCLI);

37/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Création de la table commande

Créer la table COMMANDE (numcom, numcli, datecom)


Définir sa clé primaire.
Définir sa clé étrangère.

38/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Création des tables

Création de la table COMMANDE


Create table Commande (
Numcom int not null auto_increment,
NumCli int not null,
Datecom date ,
Constraint pk_cm_ncom primary key(Numcom),
Constraint fk_cm_ncli foreign key (NUMCLI)
references CLIENT (NUMCLI) );

39/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Suppression d’une table

Supprimer une table revient à éliminer sa structure et toutes les


données qu’elle contient.
Les index associés sont également supprimés.

Syntaxe
DROP TABLE nom_table;

40/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Suppression d’une table

Supprimer la table client.

Exemple
DROP TABLE CLIENT;

41/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Suppression d’une table

Supprimer la table client.

Exemple
DROP TABLE CLIENT;

41/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Ajout d’une colonne

Syntaxe
ALTER TABLE nom_table
ADD (
nom_colonne type [contrainte],
...);

42/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Ajout d’une colonne

Ajouter la colonne poids à la table produit.

Exemple
alter table PRODUIT
add POIDS decimal(4,2);

43/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Ajout d’une colonne

Ajouter la colonne poids à la table produit.

Exemple
alter table PRODUIT
add POIDS decimal(4,2);

43/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Modification d’une colonne

Syntaxe
ALTER TABLE nom_table
MODIFY (
nom_colonne type [contrainte],
...);

44/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Modification d’une colonne

Modifier le type de la colonne ville de la table Client en


varchar(10).

Exemple
alter table CLIENT
modify ville varchar(10);

45/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Modification d’une colonne

Modifier le type de la colonne ville de la table Client en


varchar(10).

Exemple
alter table CLIENT
modify ville varchar(10);

45/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Suppression d’une colonne

Syntaxe
ALTER TABLE nom_table
DROP (
nom_colonne type [contrainte],
...);

46/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Suppression d’une colonne

Supprimer la colonne ville de la table client.

Exemple
alter table CLIENT
drop ville;

47/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple: Suppression d’une colonne

Supprimer la colonne ville de la table client.

Exemple
alter table CLIENT
drop ville;

47/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Renommer une colonne

Syntaxe
Exemple
ALTER TABLE nom_table
ALTER TABLE client
CHANGE
CHANGE
ancien_nom nouveau_nom
categorie cat char(1);
type;

48/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Renommer une table

Syntaxe Exemple
ALTER TABLE nom_table ALTER TABLE client
RENAME RENAME
To nouveau_nom; To custumor;

49/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Création d’une table, Contraintes, Suppression, Modification
Langage d’interrogation de données

Exemple

50/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Insertion des données

Syntaxe
INSERT into nom_table(nom_col_1, nom_col_2, ...)
VALUES (val_1, val_2, ...);

Exemple
insert into CLIENT (NOMCLI, VILLE , CATEGORIE, COMPTE)
values
(’AMINE’ ,’RABAT’ ,’A’,11250.00),
(’DRISS’ ,’CASABLANCA’ ,’A’,12300);

51/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Modification des données

Syntaxe
UPDATE nom_table
set
nom_col_1 = expression_1,
nom_col_2 = expression_2,
...
nom_col_n = expression_n
WHERE predicat;

52/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Exemple: Modification des données

Augmentez de 1000 Dhs les comptes des clients de catégorie A.

Exemple
update client
set compte=compte+1000
where categorie=’A’;

53/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Exemple: Modification des données

Augmentez de 1000 Dhs les comptes des clients de catégorie A.

Exemple
update client
set compte=compte+1000
where categorie=’A’;

53/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Suppression des données

Syntaxe
DELETE FROM nom_table
WHERE predicat;

54/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Exemple: Suppression des données

Supprimer tous les clients de Casablanca.

Exemple
delete from client where
ville=’Casablanca’;

55/184

Mohammed KHALIL Chapitre 4: Langage SQL


Langage de définition de données
Langage de manipulation de données Insertion des données, Modification des données, Suppressio
Langage d’interrogation de données

Exemple: Suppression des données

Supprimer tous les clients de Casablanca.

Exemple
delete from client where
ville=’Casablanca’;

55/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Syntaxe générale de la commande SELECT

SELECT [ ALL | DISTINCT ] * | expression [ AS nom_affiché ] [, ...]


FROM nom_table [ [ AS ] alias ] [, ...]
[ WHERE prédicat ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]

56/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

57/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

SQL SELECT

58/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Requête simple

Une requête simple contient trois parties principales :


Select indique quelles colonnes renvoyer
From indique dans quelle table rechercher
Where donne la condition de sélection

59/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Opération arithmétiques

60/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions de comparaisons

61/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions de comparaisons

62/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction simple
Si on veut extraire les valeurs de certaines colonnes d’une
table:

63/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction simple
SELECT numcli, nomcli, ville
From CLIENT

64/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction simple
Si on demande les valeurs de toutes les colonnes.

65/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction simple
SELECT *
From CLIENT

66/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction de lignes sélectionnées


Extrayons les informations numcli et nomcli qui concernent les
clients de Casablanca.
Select numcli, nomcli
From CLIENT
Where ville = ’Casablanca’

67/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Extraction de lignes sélectionnées


Extrayons les informations numcli et nomcli qui concernent les
clients de Casablanca.
Select numcli, nomcli
From CLIENT
Where ville = ’Casablanca’

67/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Lignes dupliquées
Si on veut afficher les villes où habitent des clients de catégorie
A:

Select ville
From CLIENT
Where categorie = ’A’

68/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Lignes dupliquées
Si on veut afficher les villes où habitent des clients de catégorie
A:

Select ville
From CLIENT
Where categorie = ’A’

68/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Lignes non dupliquées


On peut éliminer les lignes en double par la clause distinct:
Select distinct ville
From CLIENT
Where categorie = ’A’

69/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Lignes non dupliquées


On peut éliminer les lignes en double par la clause distinct:
Select distinct ville
From CLIENT
Where categorie = ’A’

69/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Données extraites et données dérivées


Si on veut afficher un tableau des montants TVA des articles en
stock dont la quantité restante est supérieure à 500 unités.

70/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Données extraites et données dérivées

Select ’TVA de ’, numpro, ’ = ’,0.21*prix*Qstock


From PRODUIT
Where qstock > 500

71/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Données extraites et données dérivées


On peut définir un alias de colonne.
Select numpro As Produit, 0.21*prix*Qstock As
Valeur_TVA
From PRODUIT
Where Qstock > 500

72/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires
Une condition élémentaire peut porter sur la présence de la
valeur null :
categorie is null
categorie is not null

73/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires
Une condition élémentaire peut porter sur la présence de la
valeur null :
categorie is null
categorie is not null

73/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires
Une condition peut aussi porter sur l’appartenance à une liste :
categorie in (’A’,’B’,’C’)
ville not in (’Tanger’,’Rabat’,’Casablanca’)

74/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires
Une condition peut aussi porter sur l’appartenance à une liste :
categorie in (’A’,’B’,’C’)
ville not in (’Tanger’,’Rabat’,’Casablanca’)

74/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires

Une condition peut aussi porter un intervalle :


compte between 1000 and 4000
categorie not between ’A’ and ’C’

75/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires

Une condition peut aussi porter un intervalle :


compte between 1000 and 4000
categorie not between ’A’ and ’C’

75/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions élémentaires

76/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Ordre des lignes d’un résultat


Si on veut trier les lignes par ordre croissant des villes
Select numcli, nomcli, ville, categorie
From CLIENT
Where categorie in (’A’,’C’)
Order by ville

77/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Ordre des lignes d’un résultat


Si on veut trier les lignes par ordre croissant des villes
Select numcli, nomcli, ville, categorie
From CLIENT
Where categorie in (’A’,’C’)
Order by ville

77/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Ordre des lignes d’un résultat


On peut également spécifier un ordre ascendant (asc) ou
descendant (desc) :
Select *
From PRODUIT
Where nompro like ’%casques%’
Order by Qstock desc

78/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Ordre des lignes d’un résultat


On peut également spécifier un ordre ascendant (asc) ou
descendant (desc) :
Select *
From PRODUIT
Where nompro like ’%casques%’
Order by Qstock desc

78/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher tous les clients dont le nom précède alphabétiquement


la ville où ils résident.

79/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher tous les clients dont le nom précède alphabétiquement


la ville où ils résident.
Select NUMCLI, NOMCLI, ville
From CLIENT
Where NOMCLI < ville

80/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

81/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Étant donné les conditions P et Q relatives aux lignes de la


table T, la clause

where P and Q sélectionne les lignes de T qui vérifient


simultanément P et Q;
where P or Q sélectionne les lignes de T qui vérifient P ou
Q ou les deux;
where not P sélectionne les lignes de T qui ne vérifient pas
P.

82/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Étant donné les conditions P et Q relatives aux lignes de la


table T, la clause

where P and Q sélectionne les lignes de T qui vérifient


simultanément P et Q;
where P or Q sélectionne les lignes de T qui vérifient P ou
Q ou les deux;
where not P sélectionne les lignes de T qui ne vérifient pas
P.

82/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Étant donné les conditions P et Q relatives aux lignes de la


table T, la clause

where P and Q sélectionne les lignes de T qui vérifient


simultanément P et Q;
where P or Q sélectionne les lignes de T qui vérifient P ou
Q ou les deux;
where not P sélectionne les lignes de T qui ne vérifient pas
P.

82/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées
Si on veut retenir les lignes pour lesquelles, ville a pour valeur
’Rabat’ et compte a une valeur positive.
Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and COMPTE > 0

83/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées
Si on veut retenir les lignes pour lesquelles, ville a pour valeur
’Rabat’ et compte a une valeur positive.
Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and COMPTE > 0

83/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Considérons la requête suivante:


Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and compte > 0 or categorie = ’B’
La négation (not) a priorité sur la conjonction (and), qui
elle-même a priorité sur la disjonction (or).

84/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Considérons la requête suivante:


Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and compte > 0 or categorie = ’B’
La négation (not) a priorité sur la conjonction (and), qui
elle-même a priorité sur la disjonction (or).

84/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Considérons la requête suivante:


Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and compte > 0 or categorie = ’B’
La négation (not) a priorité sur la conjonction (and), qui
elle-même a priorité sur la disjonction (or).

84/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Ceci est équivalent à écrire


Select nomcli, ville, compte
From CLIENT
Where (ville = ’Rabat’ and compte > 0) or categorie = ’B’

85/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Ceci est équivalent à écrire


Select nomcli, ville, compte
From CLIENT
Where (ville = ’Rabat’ and compte > 0) or categorie = ’B’

85/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Que fait cette requête?


Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and (compte > 5000 or categorie =
’B’)

86/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées
Que fait cette requête?
Select nomcli, ville, compte
From CLIENT
Where ville = ’Rabat’ and (compte > 5000 or categorie =
’B’)

87/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Trois autres opérateurs pourront être utiles :


la disjonction exclusive, notée P ⊕ Q (ou exclusif en
français, absent d’SQL); cette expression est vraie si un et
un seul des arguments est vrai;
l’implication, notée P ⇒ Q (implique en français, absent
d’SQL); cette expression est vraie sauf si P est vrai et Q
est faux;
l’équivalence, notée P ⇔ Q (équivaut à en français,
absent d’SQL); cette expression est vraie lorsque P et Q
ont la même valeur.
88/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Trois autres opérateurs pourront être utiles :


la disjonction exclusive, notée P ⊕ Q (ou exclusif en
français, absent d’SQL); cette expression est vraie si un et
un seul des arguments est vrai;
l’implication, notée P ⇒ Q (implique en français, absent
d’SQL); cette expression est vraie sauf si P est vrai et Q
est faux;
l’équivalence, notée P ⇔ Q (équivaut à en français,
absent d’SQL); cette expression est vraie lorsque P et Q
ont la même valeur.
88/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Expressions composées

Trois autres opérateurs pourront être utiles :


la disjonction exclusive, notée P ⊕ Q (ou exclusif en
français, absent d’SQL); cette expression est vraie si un et
un seul des arguments est vrai;
l’implication, notée P ⇒ Q (implique en français, absent
d’SQL); cette expression est vraie sauf si P est vrai et Q
est faux;
l’équivalence, notée P ⇔ Q (équivaut à en français,
absent d’SQL); cette expression est vraie lorsque P et Q
ont la même valeur.
88/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Table logique

89/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Négation

Les clients de Tanger dont le compte dépasse 1000 DHs


Ville = ’Tanger’ and COMPTE >1000
Les clients qui ne tombent pas dans cette catégorie sont
caractérisés par la condition inverse
not (Ville = ’Tanger’ and COMPTE >1000)
not (Ville = ’Tanger’) or not (COMPTE >1000)
Ville <> ’Tanger’ or COMPTE<=1000

90/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Négation

Les clients de Tanger dont le compte dépasse 1000 DHs


Ville = ’Tanger’ and COMPTE >1000
Les clients qui ne tombent pas dans cette catégorie sont
caractérisés par la condition inverse
not (Ville = ’Tanger’ and COMPTE >1000)
not (Ville = ’Tanger’) or not (COMPTE >1000)
Ville <> ’Tanger’ or COMPTE<=1000

90/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Négation

Les clients de Tanger dont le compte dépasse 1000 DHs


Ville = ’Tanger’ and COMPTE >1000
Les clients qui ne tombent pas dans cette catégorie sont
caractérisés par la condition inverse
not (Ville = ’Tanger’ and COMPTE >1000)
not (Ville = ’Tanger’) or not (COMPTE >1000)
Ville <> ’Tanger’ or COMPTE<=1000

90/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Négation

Les clients de Tanger dont le compte dépasse 1000 DHs


Ville = ’Tanger’ and COMPTE >1000
Les clients qui ne tombent pas dans cette catégorie sont
caractérisés par la condition inverse
not (Ville = ’Tanger’ and COMPTE >1000)
not (Ville = ’Tanger’) or not (COMPTE >1000)
Ville <> ’Tanger’ or COMPTE<=1000

90/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Négation

Les clients de Tanger dont le compte dépasse 1000 DHs


Ville = ’Tanger’ and COMPTE >1000
Les clients qui ne tombent pas dans cette catégorie sont
caractérisés par la condition inverse
not (Ville = ’Tanger’ and COMPTE >1000)
not (Ville = ’Tanger’) or not (COMPTE >1000)
Ville <> ’Tanger’ or COMPTE<=1000

90/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher tous les clients de catégorie ’A’ n’habitant pas à


Casablanca.

91/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher tous les clients de catégorie ’A’ n’habitant pas à


Casablanca.
Select *
From CLIENT
Where CATEGORIE = ’A’
And VILLE <> ’Casablanca’

92/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Donner le numéro, le nom et le compte des clients de Rabat et


de Fes dont le compte est positif.

93/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Donner le numéro, le nom et le compte des clients de Rabat et


de Fes dont le compte est positif.
Select NUMCLI, NOMCLI, COMPTE
From CLIENT
Where VILLE in (’Rabat’,’Fes’)
And COMPTE > 0

94/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Rechercher les clients qui n’habitent ni à Rabat ni à


Casablanca.

95/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Rechercher les clients qui n’habitent ni à Rabat ni à


Casablanca.
Select NUMCLI, ville
From CLIENT
Where ville not in (’Rabat’,’Casablanca’);

96/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Rechercher les clients qui sont de catégorie A ou C, et qui


habitent à Rabat ou à Casablanca.

97/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Rechercher les clients qui sont de catégorie A ou C, et qui


habitent à Rabat ou à Casablanca.
Select NumCLI, ville, categorie
From CLIENT
Where categorie in (’A’,’C’)
And ville in (’Rabat’,’Casablanca’)

98/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 5

Rechercher les clients qui n’ont pas été sélectionnés dans la


question précédente.

99/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 5

Rechercher les clients qui n’ont pas été sélectionnés dans la


question précédente.
Select NumCLI, ville, categorie
From CLIENT
Where categorie not in (’A’,’C’)
Or ville not in (’Rabat’,’Casablanca’)

100/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 6

Quelles catégories de clients trouve-t-on à Casablanca ?

101/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 6

Quelles catégories de clients trouve-t-on à Casablanca ?


Select distinct CATEGORIE
From CLIENT
Where Ville = ’Casablanca’
And CATEGORIE is not null

102/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 7

Afficher tous les clients dont le nom commence par Y et dont


l’avant dernière lettre contient N.

103/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 7

Afficher tous les clients dont le nom commence par Y et dont


l’avant dernière lettre contient N.
Select *
From CLIENT
Where nomcli like ’Y%N_’;

104/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

105/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous requête
Considérons les clients qui habitent dans une ville donnée. Il
est possible d’en retrouver les numéros en posant la requête
suivante :

Select numcli
From CLIENT
Where ville = ’Casablanca’

dont l’exécution nous donnerait :


NCLI
2
5
10 106/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous requête

Il est alors aisé de retrouver les commandes de ces clients de


Casablanca :

Select numcom, datecom


From COMMANDE
Where numcli in (2,5,10)

107/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous requête

La requête équivalente aux deux précédentes :

Select numcom, datecom


From COMMANDE
Where numcli in ( Select numcli
From CLIENT
Where ville = ’Casablanca’)

108/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions d’association négatives

Que fait cette requête?

Select numcom, datecom, numcli


From COMMANDE
Where numcom not in (Select numcom
From DETAIL
Where numpro = 2)

La requête suivante désigne les commandes qui ne spécifient


pas le produit 2, autrement dit, celles pour lesquelles il
n’existe aucun détail spécifiant le produit 2.
109/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Conditions d’association négatives

Que fait cette requête?

Select numcom, datecom, numcli


From COMMANDE
Where numcom not in (Select numcom
From DETAIL
Where numpro = 2)

La requête suivante désigne les commandes qui ne spécifient


pas le produit 2, autrement dit, celles pour lesquelles il
n’existe aucun détail spécifiant le produit 2.
109/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Références multiples à une même table

Que fait cette requête?

Select *
From CLIENT
Where ville in ( Select ville
From CLIENT
Where numcli = 3)

La requête suivante répond à la question : Quels sont les


clients qui habitent dans la même ville que le client 3?
110/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Références multiples à une même table

Que fait cette requête?

Select *
From CLIENT
Where ville in ( Select ville
From CLIENT
Where numcli = 3)

La requête suivante répond à la question : Quels sont les


clients qui habitent dans la même ville que le client 3?
110/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 3.

111/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 3.
Select distinct NUMCLI
From COMMANDE
Where NUMCOM in (Select NUMCOM
From DETAIL
Where NUMPRO = 3);

112/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Afficher les produits qui ont été commandés par les clients qui
habitent à Casablanca.

113/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2
Afficher les produits qui ont été commandés par les clients qui
habitent à Casablanca.

114/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous requête

115/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Alias de table

On peut préfixer le nom de la colonne du nom de la table:


COMMANDE.numcli et CLIENT.numcli
On peut également attribuer un synonyme, dit alias de table, à
un nom de table apparaissant dans une clause from.

Select *
From PRODUIT as P1
Where P1.prix > 123

116/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Alias de table

On peut préfixer le nom de la colonne du nom de la table:


COMMANDE.numcli et CLIENT.numcli
On peut également attribuer un synonyme, dit alias de table, à
un nom de table apparaissant dans une clause from.

Select *
From PRODUIT as P1
Where P1.prix > 123

116/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Alias de table

On peut préfixer le nom de la colonne du nom de la table:


COMMANDE.numcli et CLIENT.numcli
On peut également attribuer un synonyme, dit alias de table, à
un nom de table apparaissant dans une clause from.

Select *
From PRODUIT as P1
Where P1.prix > 123

116/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Références multiples à une même table

Sélectionner les clients dont le compte est supérieur à la


moyenne des comptes des clients de la même ville.

117/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Références multiples à une même table

Sélectionner les clients dont le compte est supérieur à la


moyenne des comptes des clients de la même ville.

118/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ensemblistes

Les quantificateurs any et all permettent de comparer une


valeur à celles d’un ensemble défini par une sous-requête.
Any signifie qu’au moins un élément de l’ensemble
satisfait la comparaison et All signifie que tous les
éléments la satisfont.

119/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ensemblistes

Les quantificateurs any et all permettent de comparer une


valeur à celles d’un ensemble défini par une sous-requête.
Any signifie qu’au moins un élément de l’ensemble
satisfait la comparaison et All signifie que tous les
éléments la satisfont.

119/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ALL
Quelles sont les commandes (du produit 1) qui ont une
quantité inférieure à toutes les quantités de commande du
produit numéro 1 ?

120/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ALL
Quelles sont les commandes (du produit 1) qui ont une
quantité inférieure à toutes les quantités de commande du
produit numéro 1 ?

121/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ALL

Quelles sont les commandes (du produit 1) qui ont une


quantité inférieure à toutes les quantités de commande du
produit numéro 1 ?

122/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ALL

Quelles sont les commandes qui spécifient la plus petite


quantité du produit numéro 1 ?

123/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ALL

Il n’existe pas de détails spécifiant une quantité inférieure.

124/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ANY
Quelles sont les commandes (du produit 1) qui ont une
quantité supérieure à n’importe quelles quantités de
commande du produit numéro 1 ?

125/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ANY
Quelles sont les commandes (du produit 1) qui ont une
quantité supérieure à n’importe quelles quantités de
commande du produit numéro 1 ?

126/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ANY

Quelles sont les commandes (du produit 1) qui ont une


quantité supérieure à n’importe quelles quantités de
commande du produit numéro 1 ?

127/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ANY

Quelles sont les détails de commande du produit 1 dont la


quantité commandée n’est pas minimale?

128/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Quantificateurs ANY

La valeur QCOM est supérieure à moins un des éléments de


(select QCOM from DETAIL where NumPRO = 1).

129/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

130/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions du système

current_date : la date courante;


current_time : l’instant courant;
current_timestamp : date + instant courant.

131/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

count(*) donne le nombre de lignes trouvées,


count(nom-colonne) donne le nombre de valeurs de la
colonne,
avg(nom-colonne) donne la moyenne des valeurs de la
colonne,
sum(nom-colonne) donne la somme des valeurs de la
colonne,
min(nom-colonne) donne le minimum des valeurs de la
colonne,
max(nom-colonne) donne le maximum des valeurs de la
colonne. 132/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Fonctions agrégatives

Select count(*) from client


Résultat: 10
Select count(nomcli) from client
Résultat: 10
Select distinct count(nomcli) from client
Résultat: 10
Select count(distinct nomcli) from client
Résultat: 8
Select count(categorie) from client
Résultat: 8 133/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
Que fait cette requête?
Select count(NumCLI) as Numeros,
count(Nomcli) as Noms,
count(Ville) as Localites,
count(Categorie) as Categories
From CLIENT;

134/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
Que fait cette requête?
Select count(NumCLI) as Numeros,
count(Nomcli) as Noms,
count(Ville) as Localites,
count(Categorie) as Categories
From CLIENT;

135/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
Que fait cette requête?
Select count(distinct NumCLI) as Numeros,
count(distinct NOMCli) as Noms,
count(distinct Ville) as Localites,
count(distinct Categorie) as Categories
From CLIENT;

136/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
Que fait cette requête?
Select count(distinct NumCLI) as Numeros,
count(distinct NOMCli) as Noms,
count(distinct Ville) as Localites,
count(distinct Categorie) as Categories
From CLIENT;

137/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
On décrit la répartition (moyenne, écart maximum, nombre)
des montants des comptes des clients de Casablanca :

Select ’Casablanca’,avg(compte) as Moyenne,


max(compte)-min(compte) as Ecart_max,
count(*) as Nombre
From CLIENT
Where ville = ’Casablanca’ 138/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exemples
On décrit la répartition (moyenne, écart maximum, nombre)
des montants des comptes des clients de Casablanca :

Select ’Casablanca’,avg(compte) as Moyenne,


max(compte)-min(compte) as Ecart_max,
count(*) as Nombre
From CLIENT
Where ville = ’Casablanca’ 138/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher la valeur totale des stocks (le prix total des stocks)

139/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher la valeur totale des stocks (le prix total des stocks)

Select sum(QSTOCK*PRIX) as TOTAL


From PRODUIT

140/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Dans combien de villes trouve-t-on des clients de catégorie D ?

141/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Dans combien de villes trouve-t-on des clients de catégorie D ?

Select count(distinct ville)


From CLIENT
Where Categorie = ’D’

142/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

143/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Structure d’une jointure

144/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Structure d’une jointure

145/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Jointure de trois tables

146/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Jointure

147/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Join on

148/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Natural join

149/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Jointure: Produit cartésien

150/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous-requêtes ou jointures ?

151/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous-requêtes ou jointures ?

152/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Forme négative des conditions d’association

153/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Forme négative des conditions d’association

154/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous-requêtes ou jointures ?

155/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous-requêtes ou jointures ?

Transformer cette jointure en sous-requête.

156/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sous-requêtes ou jointures ?

Solution

157/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 4.

158/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 4.

Select distinct NUMCLI


From COMMANDE co, DETAIL de
Where co.numcom=de.numcom
And NUMPRO = 4;

159/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 4.

Select distinct NUMCLI


From COMMANDE co join DETAIL de
On co.numcom=de.numcom
Where NUMPRO = 4;

160/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Afficher les numéros des clients qui commandent le produit de


numéro 4.

Select distinct NUMCLI


From COMMANDE Natural join DETAIL
Where NUMPRO = 4;

161/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Afficher le numéro et le nom du produit dont le prix est inférieur


à n’importe quel prix des produits de la commande numéro 1.

162/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Afficher le numéro et le nom du produit dont le prix est inférieur


à n’importe quel prix des produits de la commande numéro 1.

Select numpro, nompro from produit


where prix < any(
select prix from produit natural join detail where
numcom=1)
and numpro not in (
select numpro from detail where numcom=1);

163/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Calculer le montant commandé des produits informatiques.

164/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Calculer le montant commandé des produits informatiques.

Select sum(prix*qcom)
from produit natural join detail
where typepro like ’%informatique%’;

165/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Calculer le montant de chaque détail de commande du client 2.

166/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Calculer le montant de chaque détail de commande du client 2.

Select prix*qcom
From produit natural join detail natural join commande
Where numcli=2;

167/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 5

Afficher le numéro et le nom des clients qui n’ont pas


commandé des casques.

168/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 5

Afficher le numéro et le nom des clients qui n’ont pas


commandé des casques.

Select numcli, nomcli from client


Where numcli not in (
select numcli from commande where numcom in (
select numcom from detail where numpro in(
select numpro from produit where nompro like
’%Casques%’)))

169/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Plan

1 Langage de définition de données

2 Langage de manipulation de données

3 Langage d’interrogation de données

170/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Les données groupées: Principe

171/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Les données groupées: Sélection de groupes

172/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sélection des lignes et sélection de groupes

173/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sélection des lignes et sélection de groupes

Select NumCOM From DETAIL Where NumPRO = 1;

174/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Sélection des lignes et sélection de groupes


select M.NumCLI, count(*)
from COMMANDE M, DETAIL D
where M.NumCOM = D.NumCOM
and NumPRO = 1
group by M.NumCLI

175/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Calculer, pour chaque ville, le nombre de catégories distinctes.

176/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 1

Calculer, pour chaque ville, le nombre de catégories distinctes.

Select ville, count(distinct Categorie)


From CLIENT
Where Categorie is not null
Group by ville

177/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Afficher le total et la moyenne des comptes des clients, ainsi


que le nombre de clients par catégorie dans chaque ville.

178/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 2

Afficher le total et la moyenne des comptes des clients, ainsi


que le nombre de clients par catégorie dans chaque ville.

select ville, Categorie, sum(COMPTE), avg(COMPTE),


count(*)
from CLIENT
Where Categorie is not null
group by ville, Categorie;

179/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Calculer, par jour, le total des montants des commandes.

180/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 3

Calculer, par jour, le total des montants des commandes.

Select DATECOM, sum(QCOM*PRIX)


From COMMANDE M, DETAIL D, PRODUIT P
Where M.NumCOM = D.NumCOM
And D.NumPRO = P.NumPRO
Group by DATECOM;

181/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Afficher pour chaque ville, les noms des produits qui y sont
commandés tout en triant les villes et les noms des produits
par ordre lexicographique.

182/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

Exercice 4

Afficher pour chaque ville, les noms des produits qui y sont
commandés tout en triant les villes et les noms des produits
par ordre lexicographique.

Select ville, nompro


from CLIENT natural join COMMANDE natural join
DETAIL natural join PRODUIT
group by ville, nompro
order by ville, nompro;

183/184

Mohammed KHALIL Chapitre 4: Langage SQL


Requêtes simples
Requêtes logiques
Langage de définition de données
Sous requêtes
Langage de manipulation de données
Fonctions SQL
Langage d’interrogation de données
Jointures
Regroupements

FIN du Chapitre 4

184/184

Mohammed KHALIL Chapitre 4: Langage SQL

Vous aimerez peut-être aussi