Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
BASES DE DONNÉES
- LE LANGAGE SQL -
GUEROIHI MOHAMED
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 1
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Une base de données est un ensemble
structuré de données enregistrées sur
supports accessible par l’ordinateur.
Un SGBD (Système de Gestion de Base de
Données) est un ensemble de logiciels qui fournit
un environnement pour décrire, mémoriser,
manipuler, traiter des collections de données.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 2
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Exemples de SGBD
• Access
• Sql Server
• My SQL
• Sqlite
• Oracle
• PostgreSQL
• DB2
• …
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 3
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Exemples de base de données
Pour gérer l'ensemble des informations concernant la vente des voitures, les données se
présentent sous forme de tables suivantes:
Personne Voiture
NumAch Nom Age Ville NumVoit Marque Modele Couleur
1 yassin 42 Agadir 1 Ford Fiesta Noire
2 Imane 33 Casablanca 2 Citroën C4 Blanche
3 Reda 30 Rabat 3 Renault Clio Rouge
4 Meryem 42 Agadir 4 Peugeot 307 cc Noire
5 Walid 27 Marrakech 5 Citroën C3 Bleue
… … … … 6 Renault Twingo Noire
Vente … … … …
NumAch NumVoit DateVente Prix
1 1 2013-02-12 70000
2 4 2010-12-02 55000 Tuple (enregistrement)
Ou occurrence
4 5 2009-08-26 40000
5 2 2011-09-10 80000
… … … …
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 4
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Exemples de base de données
Ces tables sont enregistrées dans la base de données Gestion_ventes ayant le schéma relationnel
suivant :
• Personne (NumAch : integer, Nom : varchar(30), Age : integer, Ville : varchar(25))
• Voiture (NumVoit : integer, Marque : varchar(20), Modele : varchar(15), Couleur : varchar(10))
• Vente (NumAch, NumVoit, Date_vente : Date, Prix : REAL)
Ce schéma relationnel peut être représenté comme suit :
Vente
NumAch
Voiture NumVoit
Date_Vente Personne
NumVoit NumAch
Prix
Marque Nom
Modele Age
Couleur Ville
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 5
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Personne Voiture Vente
NumAch Nom Age Ville NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 yassin 42 Agadir 1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Imane 33 Casablanca 2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Reda 30 Rabat 3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Meryem 42 Agadir 4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Walid 27 Marrakech 5 Citroën C3 Bleue … … … …
… … … … 6 Renault Twingo Noire
… … … …
Vente
NumAch
Voiture NumVoit
Date_Vente Personne
NumVoit NumAch
Prix
Marque Nom
Modele Age
Couleur Ville
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 6
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Personne Voiture Vente
NumAch Nom Age Ville NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 yassin 42 Agadir 1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Imane 33 Casablanca 2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Reda 30 Rabat 3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Meryem 42 Agadir 4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Walid 27 Marrakech 5 Citroën C3 Bleue … … … …
… … … … 6 Renault Twingo Noire
… … … …
Clé primaire
Clé étrangère(FK)
Vente
Clé primaire (PK) NumAch
NumVoit Clé primaire
Voiture Personne
Date_Vente
NumVoit NumAch
Prix
Marque Nom
Modele Age
Clé étrangère
Couleur Ville
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 7
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Introduction aux bases de données
Vente
NumAch
Voiture NumVoit
Date_Vente Personne
NumVoit NumAch
Prix
Marque Nom
Modele Age
Couleur Ville
• Personne, Voiture et vente sont appelées : Tables ou Relations
• Chaque table ou relation est constituée de colonnes appelées attributs.(champs)
• Les attributs de la table Personne sont : NumAch, Nom, Age et ville
• Chaque attribut a un type (ou domaine) (ex : le type de NumAch est entier (Integer)).
• Chaque table doit avoir une clé primaire (qui identifie une occurrence de la table)
(identifiant)
o La clé primaire de la table Personne est : NumAch
o La clé primaire de la table Voiture est : NumVoit
o La clé primaire de la table Vente est : NumAch+NumVoit
• La table Ventre a une jointure d’une part avec la table Personne via sa clé étrangère
NumAch et d’autre part avec la table Voiture via sa clé étrangère NumVoit.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 8
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Langage de description des données
1- Création d’une table
Syntaxe :
CREATE TABLE Nomtable (
colonne1 type1,
colonne2 type2,
.........,
.........);
Types de données
Les principaux types de données supportés sont les suivants :
chaînes de caractères de taille fixe, complétées à droite par des espaces ( CHAR(taille) ),
chaînes de taille variable ( VARCHAR(taille) ),
entiers sur 32 bits (INT ou INEGER),
nombres en précision fixe (NUMERIC (nbChiffres, nbDecimales) ),
nombres en virgule flottante simple précision (REAL),
types date et/ou heure (DATE/TIME/ DATETIME).
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 9
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Langage de description des données
1- Création d’une table
Exemple 1: Création de la table Personne Personne (NumAch : integer, Nom : varchar(30), Age : integer, Ville : varchar(25))
CREATE TABLE PERSONNE (
NumAch INT NOT NULL PRIMARY KEY,
NOM VARCHAR(30),
Age INT,
Ville VARCHAR(25)
);
Contraintes d’intégrité
Les contraintes d’intégrité, portant sur une ou plusieurs colonnes, possibles sont :
• PRIMARY KEY, spécifie qu’un ensemble d’attributs est clé primaire,
• UNIQUE, spécifie qu’un ensemble d’attributs ne contient pas des doublons (comme PRIMARY
KEY, sauf qu’Il est possible de spécifier plusieurs UNIQUE sur la même table)
• FOREIGN KEY... REFERENCES, spécifie qu’un ensemble d’attributs est clé étrangère,
• NOT NULL, spécifie qu’un ensemble d’attributs ne contient pas de valeur manquante (NULL)
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 10
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Langage de description des données
1- Création d’une table
Exemple 2: Création de la table Voiture
Voiture (NumVoit : integer, Marque : varchar(20), Modele : varchar(15), Couleur : varchar(10))
CREATE TABLE VOITURE (
NumVoit INT NOT NULL,
Marque VARCHAR(20),
Modele VARCHAR(15),
Couleur VARCHAR(10),
PRIMARY KEY (NumVoit )
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 11
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Langage de description des données
1- Création d’une table
Exemple 3: Création de la table Vente
Vente (NumAch, NumVoit, Date_vente : Date, Prix : REAL)
CREATE TABLE Vente (
NumAch INT NOT NULL,
NumVoit INT NOT NULL,
DateVente Date ,
Prix Float,
PRIMARY KEY (NumAch , NumVoit ),
FOREIGN KEY(NumAch) REFERENCES Personne (NumAch),
FOREIGN KEY(NumVoit) REFERENCES Voiture (NumVoit)
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 12
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Langage de description des données
2- Autres opérations
Opération Syntaxe
Suppression d’une table DROP TABLE Nomtable
Renommer une Table ALTER TABLE Nomtable RENAME TO NouveauNom
Ajouter une colonne à une table ALTER TABLE Nomtable ADD colonne Type
Exemple: Ajout de la colonne Tel (de type INT) dans la table Personne
ALTER TABLE Personne ADD Tel INT ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 13
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Mise à jour des données
1- Insertion des enregistrements
Exemple 1 : Insertion de5 enregistrements dans la table Personne
INSERT INTO PERSONNE VALUES
( 1, 'Yassmin' , 42 , 'Agadir'),
( 2, 'Imane' , 33 , 'Casa'),
( 3, 'Reda' , 30 , 'Rabat'),
( 4, 'Meryem' , 42 , 'Agadir'),
( 5, 'Walid' , 27 , 'Marakech');
Exemple 2: la requête suivante permet d’insérer un enregistrement dans la table voiture
INSERT INTO voiture (NumVoit, Marque, Couleur)
VALUES (10, 'Triumph', 'Bleue');
INSERT INTO voiture
VALUES (10, 'Triumph', NULL, 'Bleue');
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 14
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Mise à jour des données
1- Insertion des enregistrements
Exemple 3 : Copier une table dans une autre table
Pour copier tous les enregistrements de la table Personne vers la table Acheteur (de même
structure (colonnes)) :
INSERT INTO Acheteur SELECT * FROM Personne
Personne Acheteur
NumAch Nom Age Ville NumAch Nom Age Ville
1 yassin 42 Agadir 1 yassin 42 Agadir
2 Imane 33 Casablanca 2 Imane 33 Casablanca
3 Reda 30 Rabat 3 Reda 30 Rabat
4 Meryem 42 Agadir 4 Meryem 42 Agadir
5 Walid 27 Marrakech 5 Walid 27 Marrakech
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 15
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Mise à jour des données
2- Suppression des enregistrements
La suppression s’effectue avec la commande DELETE dont la syntaxe est la suivante :
DELETE FROM Table WHERE C ;
Cette requête supprime tous les n-uplets de Table satisfaisant la condition C.
Exemple : la requête suivante permet de supprimer les voitures rouges de la table voiture
DELETE FROM Voiture WHERE Couleur='Rouge';
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 16
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation de données
Mise à jour des données
3- Modification des enregistrements
La modification s’effectue avec la commande UPDATE dont la syntaxe est la suivante :
UPDATE Table SET Attribut=Valeur
WHERE C;
Cette requête modifie les valeurs de l'Attribut de tous les n-uplets de la Table satisfaisant la
condition C.
Exemple : la requête suivante permet de modifier la couleur de la voiture numéro 3 ( nouvelle
couleur est 'Bleue')
UPDATE Voiture SET Couleur= 'Bleue'
WHERE NumVoit =3;
NB :
Les commandes Insert, Update et Delete sont appelées requêtes Action
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 17
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
1- Projection: Extraire des colonnes (attributs) d’une relation
Algèbre Relationnel SQL
SELECT Ai ,…., An
πAi (R) FROM R ;
Exemple 1 : Projection de la table Personne sur les colonnes Nom et Ville
NumAch Nom Age Ville Nom Ville
1 Yassin 42 Agadir yassin Agadir
2 Imane 33 Casablanca Imane Casablanca
3 Reda 30 Rabat Reda Rabat
4 Meryem 42 Agadir Meryem Agadir
5 Walid 27 Marrakech Walid Marrakech
Algèbre Relationnel SQL
SELECT Nom, Ville
πnom, ville (Personne) FROM Personne ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 18
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
1- Projection: Extraire des colonnes (attributs) d’une relation
Algèbre Relationnel SQL
SELECT Ai ,…., An
πAi (R) FROM R ;
Exemple 2 : Affichage de différentes marques de voitures
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire
Marque
2 Citroën C4 Blanche
Ford
3 Renault Clio Rouge
Citroën
4 Peugeot 307 cc Noire
Renault
5 Citroën C3 Bleue
Peugeot
6 Renault Twingo Noire
Algèbre Relationnel SQL
SELECT DISTINCT Marque
πMarque (Voiture) FROM Voiture ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 19
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
1- Projection: Extraire des colonnes (attributs) d’une relation
Algèbre Relationnel SQL
SELECT Ai ,…., An
πAi (R) FROM R ;
Exemple 3 : On demande les prix des voitures en euros(les prix sont en dirhams) : (1 € = 11.03DH)
Prix DateVente Prix_Euros
NumAch NumVoit DateVente Prix
70000 2013-02-12 6342.8778
1 1 2013-02-12 70000
55000 2010-12-02 4983.6897
2 4 2010-12-02 55000
40000 2009-08-26 3624.5016
4 5 2009-08-26 40000
80000 2011-09-10 7249.0032
5 2 2011-09-10 80000
Algèbre Relationnel SQL
SELECT DISTINCT Prix,Datevente,Prix/11.03 AS 'Prix_Euros'
πPrix,DateVente,Prix/11.03 (Vente) FROM Vente ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 20
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Algèbre Relationnel SQL
σE(R) SELECT *
FROM R
E : Expression logique (condition) WHERE E;
R : Relation
Exemple 1 : Sélectionner les lignes de la table vente dont le prix est strictement supérieur à 60000
NumAch NumVoit DateVente Prix NumAch NumVoit DateVente Prix
1 1 2013-02-12 70000 1 1 2013-02-12 70000
2 4 2010-12-02 55000 5 2 2011-09-10 80000
4 5 2009-08-26 40000
5 2 2011-09-10 80000
Algèbre Relationnel SQL
SELECT *
σprix>60000(vente) FROM Vente
WHERE Prix > 60000 ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 21
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Les opérateurs utilisés (en SQL) sont :
♦ <, <=, =, >=, >, <>, != ;
♦ AND, OR, NOT ;
♦ IN, par exemple Marque IN ('Citroen', 'Opel') ; les voitures dont la marque est 'Opel'
ou 'Citroën'
♦ BETWEEN, par exemple Prix BETWEEN 45000 AND 60000 ;
♦ LIKE pour comparer des chaînes de caractères, par exemple :
Nom LIKE 'Me%' (% remplace n’importe quel ensemble de caractère) renverra les
noms commençant par 'Me' (Mehdi, Meryem,..).
Nom LIKE '_e%' ( _ remplace un seul caractère) retourne les noms dont le deuxième
caractère est e.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 22
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Algèbre Relationnel SQL
SELECT *
σE(R) FROM R
WHERE E;
Exemple 2 : Liste des voitures rouges ou blanches
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire NumVoit Marque Modele Couleur
2 Citroën C4 Blanche 2 Citroën C4 Blanche
3 Renault Clio Rouge 3 Renault Clio Rouge
4 Peugeot 307 cc Noire
5 Citroën C3 Bleue
6 Renault Twingo Noire
Algèbre Relationnel
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 23
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Algèbre Relationnel SQL
SELECT *
σE(R) FROM R
WHERE E;
Exemple 2 : Liste des voitures rouges ou blanches
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire NumVoit Marque Modele Couleur
2 Citroën C4 Blanche 2 Citroën C4 Blanche
3 Renault Clio Rouge 3 Renault Clio Rouge
4 Peugeot 307 cc Noire
5 Citroën C3 Bleue
6 Renault Twingo Noire
Algèbre Relationnel
σcouleur='Blanche' ∨ couleur='Rouge' (Voiture)
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 24
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 2 : Liste des voitures rouges ou blanches
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire NumVoit Marque Modele Couleur
2 Citroën C4 Blanche 2 Citroën C4 Blanche
3 Renault Clio Rouge 3 Renault Clio Rouge
4 Peugeot 307 cc Noire
5 Citroën C3 Bleue
6 Renault Twingo Noire
SQL
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 25
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 2 : Liste des voitures rouges ou blanches
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire NumVoit Marque Modele Couleur
2 Citroën C4 Blanche 2 Citroën C4 Blanche
3 Renault Clio Rouge 3 Renault Clio Rouge
4 Peugeot 307 cc Noire
5 Citroën C3 Bleue
6 Renault Twingo Noire
SQL
SELECT *
FROM VOITURE
WHERE Couleur ='Blanche' OR Couleur ='Rouge'
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 26
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 2 : Liste des voitures rouges ou blanches
NumVoit Marque Modele Couleur
1 Ford Fiesta Noire NumVoit Marque Modele Couleur
2 Citroën C4 Blanche 2 Citroën C4 Blanche
3 Renault Clio Rouge 3 Renault Clio Rouge
4 Peugeot 307 cc Noire
5 Citroën C3 Bleue
6 Renault Twingo Noire
SQL
SELECT *
FROM VOITURE
WHERE Couleur IN ('Blanche' , 'Rouge' )
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 27
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 3 : Extraction des personnes dont l’âge est compris entre 25 et 40 ans.
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
2 Imane 33 Casablanca
2 Imane 33 Casablanca
3 Reda 30 Rabat
3 Reda 30 Rabat
5 Walid 27 Marrakech
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σAge>25 ∧ Age<40 (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE Age >=25 AND Age<=40;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 28
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 3 : Extraction des personnes dont l’âge est compris entre 25 et 40 ans.
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
2 Imane 33 Casablanca
2 Imane 33 Casablanca
3 Reda 30 Rabat
3 Reda 30 Rabat
5 Walid 27 Marrakech
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σAge>25 ∧ Age<40 (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE Age BETWEEN 25 AND 40;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 29
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 4 : Extraction des personnes n’habitant pas Agadir.
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
2 Imane 33 Casablanca
2 Imane 33 Casablanca
3 Reda 30 Rabat
3 Reda 30 Rabat
5 Walid 27 Marrakech
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σVille ≠ 'Agadir' (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE Ville != 'Agadir';
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 30
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 4 : Extraction des personnes n’habitant pas Agadir.
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
2 Imane 33 Casablanca
2 Imane 33 Casablanca
3 Reda 30 Rabat
3 Reda 30 Rabat
5 Walid 27 Marrakech
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σVille ≠ 'Agadir' (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE Ville NOT LIKE 'Agadir';
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 31
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 4 : Extraction des personnes n’habitant pas Agadir.
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
2 Imane 33 Casablanca
2 Imane 33 Casablanca
3 Reda 30 Rabat
3 Reda 30 Rabat
5 Walid 27 Marrakech
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σVille ≠ 'Agadir' (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE Ville NOT IN ('Agadir');
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 32
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 5 : Extraction des personnes dont le 2ème caractère de son nom est un 'e'
NumAch Nom Age Ville
NumAch Nom Age Ville
1 yassin 42 Agadir
3 Reda 30 Rabat
2 Imane 33 Casablanca
4 Meryem 42 Agadir
3 Reda 30 Rabat
4 Meryem 42 Agadir
5 Walid 27 Marrakech
Algèbre Relationnel
σnom ≈ '_e%' (Personne)
SQL
SELECT *
FROM PERSONNE
WHERE nom LIKE '_e%';
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 33
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 6 : Requête permettant d'éditer les personnes dans l'ordre des âges croissants:'
NumAch Nom Age Ville NumAch Nom Age Ville
1 yassin 42 Agadir 5 Walid 27 Marrakech
2 Imane 33 Casablanca 3 Reda 30 Rabat
3 Reda 30 Rabat 2 Imane 33 Casablanca
4 Meryem 42 Agadir 1 yassin 42 Agadir
5 Walid 27 Marrakech 4 Meryem 42 Agadir
SQL
SELECT *
FROM PERSONNE
ORDER BY AGE ASC;
ASC : Ordre croissant
DESC : Ordre décroissant
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 34
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 7 : Requête permettant d'éditer la liste des 3 premières personnes les plus jeunes:'
NumAch Nom Age Ville NumAch Nom Age Ville
1 yassin 42 Agadir 5 Walid 27 Marrakech
2 Imane 33 Casablanca 3 Reda 30 Rabat
3 Reda 30 Rabat 2 Imane 33 Casablanca
4 Meryem 42 Agadir
5 Walid 27 Marrakech
SQL
SELECT *
FROM PERSONNE
ORDER BY AGE ASC
LIMIT 3;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 35
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
2- Sélection: Sélectionner des lignes (enregistrements) d’une relation selon une condition
Exemple 8 : Requête permettant d'éditer la liste des personnes dont la ville n’est pas saisie
SQL
SELECT *
FROM PERSONNE
WHERE Ville IS NULL;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 36
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
Exemple 9 : Requête exprimant une projection et sélection
on veut extraire les noms et age des personnes qui habitent agadir
Algèbre Relationnel
πnom, age(σVille = 'Agadir' (Personne) )
Algèbre Relationnel
σVille = 'Agadir' (πnom, age(Personne) )
SQL
SELECT Nom, Age
FROM PERSONNE
WHERE Ville LIKE 'Agadir';
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 37
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
3- Produit cartésien:
Algèbre Relationnel SQL
SELECT *
R1 x R2 FROM R1 , R2 ;
Exemple
Algèbre Relationnel SQL
SELECT *
VOITURE x VENTE FROM VOITURE , VENTE ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 38
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
3- Produit cartésien:
Exemple
Algèbre Relationnel SQL
SELECT *
VOITURE x VENTE FROM VOITURE , VENTE ;
Voiture
Vente
NumVoit Marque Modele Couleur
NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire
1 1 2013-02-12 70000
2 Citroën C4 Blanche
2 4 2010-12-02 55000
3 Renault Clio Rouge
4 5 2009-08-26 40000
4 Peugeot 307 cc Noire
5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 39
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
3- Produit cartésien: Voiture X Vente
Numvoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 12/02/2013 70000
1 Ford Fiesta Noire 2 4 02/12/2010 55000
1 Ford Fiesta Noire 4 5 26/08/2009 40000
1 Ford Fiesta Noire 5 2 10/09/2011 80000
2 Citroën C4 Blanche 1 1 12/02/2013 70000
2 Citroën C4 Blanche 2 4 02/12/2010 55000
2 Citroën C4 Blanche 4 5 26/08/2009 40000
2 Citroën C4 Blanche 5 2 10/09/2011 80000
3 Renault Clio Rouge 1 1 12/02/2013 70000
3 Renault Clio Rouge 2 4 02/12/2010 55000
3 Renault Clio Rouge 4 5 26/08/2009 40000
3 Renault Clio Rouge 5 2 10/09/2011 80000
4 Peugeot 307 cc Noire 1 1 12/02/2013 70000
4 Peugeot 307 cc Noire 2 4 02/12/2010 55000
4 Peugeot 307 cc Noire 4 5 26/08/2009 40000
4 Peugeot 307 cc Noire 5 2 10/09/2011 80000
5 Citroën C3 Bleue 1 1 12/02/2013 70000
5 Citroën C3 Bleue 2 4 02/12/2010 55000
5 Citroën C3 Bleue 4 5 26/08/2009 40000
5 Citroën C3 Bleue 5 2 10/09/2011 80000
6 Renault Twingo Noire 1 1 12/02/2013 70000
6 Renault Twingo Noire 2 4 02/12/2010 55000
6 Renault Twingo Noire 4 5 26/08/2009 40000
6 Renault Twingo Noire 5 2 10/09/2011 80000
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 40
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure:
Algèbre Relationnel SQL
R1 ▷◁A R2 SELECT *
Si A est l'attribut commun FROM R1 JOIN R2
ou ON R1.A = R2.A
R1 ▷◁A1,A2 R2
Exemple 1 :
Algèbre Relationnel SQL
SELECT *
Voiture ▷◁ Vente FROM VOITURE JOIN VENTE
NumVoit
ON [Link] = [Link];
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 41
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure: Numvoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 12/02/2013 70000
Voiture ▷◁ Vente
1 Ford Fiesta Noire 2 4 02/12/2010 55000
NumVoit
1 Ford Fiesta Noire 4 5 26/08/2009 40000
1 Ford Fiesta Noire 5 2 10/09/2011 80000
2 Citroën C4 Blanche 1 1 12/02/2013 70000
2 Citroën C4 Blanche 2 4 02/12/2010 55000
SELECT * 2 Citroën C4 Blanche 4 5 26/08/2009 40000
FROM VOITURE JOIN VENTE 2 Citroën C4 Blanche 5 2 10/09/2011 80000
ON [Link] = [Link]; 3 Renault Clio Rouge 1 1 12/02/2013 70000
3 Renault Clio Rouge 2 4 02/12/2010 55000
3 Renault Clio Rouge 4 5 26/08/2009 40000
3 Renault Clio Rouge 5 2 10/09/2011 80000
4 Peugeot 307 cc Noire 1 1 12/02/2013 70000
4 Peugeot 307 cc Noire 2 4 02/12/2010 55000
4 Peugeot 307 cc Noire 4 5 26/08/2009 40000
4 Peugeot 307 cc Noire 5 2 10/09/2011 80000
5 Citroën C3 Bleue 1 1 12/02/2013 70000
5 Citroën C3 Bleue 2 4 02/12/2010 55000
5 Citroën C3 Bleue 4 5 26/08/2009 40000
5 Citroën C3 Bleue 5 2 10/09/2011 80000
6 Renault Twingo Noire 1 1 12/02/2013 70000
6 Renault Twingo Noire 2 4 02/12/2010 55000
6 Renault Twingo Noire 4 5 26/08/2009 40000
6 Renault Twingo Noire 5 2 10/09/2011 80000
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 42
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure: Voiture
Vente
NumVoit Marque Modele Couleur
NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire
1 1 2013-02-12 70000
2 Citroën C4 Blanche
2 4 2010-12-02 55000
3 Renault Clio Rouge
4 5 2009-08-26 40000
4 Peugeot 307 cc Noire
5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
Voiture ▷◁ Vente
NumVoit
Numvoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 12/02/2013 70000
2 Citroën C4 Blanche 5 2 10/09/2011 80000
4 Peugeot 307 cc Noire 2 4 02/12/2010 55000
5 Citroën C3 Bleue 4 5 26/08/2009 40000
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 43
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure:
Remarque : Le résultat d'une jointure peut être obtenu par une sélection sur produit cartésien.
Algèbre Relationnel
σ [Link]=[Link](Voiture X VENTE)
SQL
SELECT *
FROM VOITURE , VENTE
WHERE [Link] = [Link];
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 44
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure:
Exemple 2 : Ecrire la requête permettant d’afficher la marque, la couleur et le prix de la voiture
achetée par "Walid"..
Algèbre Relationnel
π Marque,couleur,prix (σ Nom ='Walid' (Personne▷◁ Vente ▷◁Voiture) )
NumAch NumVoit
SQL
SELECT Marque,Couleur,Prix
FROM Personne JOIN Vente JOIN Voiture
ON [Link]=[Link] AND [Link]=[Link]
WHERE Nom LIKE 'Walid' ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 45
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
4- Jointure:
Exemple 2 : Ecrire la requête permettant d’afficher la marque, la couleur et le prix de la voiture
achetée par "Walid"..
Algèbre Relationnel
π Marque,couleur,prix (σ [Link]=[Link] ∧ [Link]=[Link] ∧ Nom ='Walid'
(Personne,Vente,Voiture) )
SQL
SELECT Marque,Couleur,Prix
FROM Personne ,Vente ,Voiture
WHERE [Link]=[Link] AND [Link]=[Link]
AND Nom LIKE 'Walid' ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 46
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
5- Fonctions d’agrégation:
AVG : Calcule la moyenne d’une colonne.
COUNT : Compte le nombre de lignes.
MAX : Calcule la valeur maximale.
MIN : Calcule la valeur minimale.
SUM : Calcule la somme des valeurs d’une colonne.
Exemple 1: La requête SQL suivante permet de récupérer le prix moyen des voitures.
SELECT AVG(Prix)
FROM Vente ;
Exemple 2: La requête SQL suivante permet d’afficher la somme des prix, le prix max, le nombre de
voitures vendues, et le prix moyen des voitures.
SELECT SUM(prix), MAX(prix), COUNT(*), AVG(Prix)
FROM Vente ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 47
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Il peut être intéressant de regrouper des résultats afin de faire des opérations par groupe.
Cette opération sera réalisée à l’aide de la clause GROUP BY suivie du nom de chaque
colonne sur laquelle on veut effectuer des regroupements.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 48
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Exemple 1: La requête suivante permet de récupérer le nombre de voitures pour chaque marque de la
table voiture.
SELECT Marque, COUNT(*) AS Compte
FROM VOITURE
GROUP BY MARQUE ;
Voiture
NumVoit Marque Modele Couleur
Marque Compte
1 Ford Fiesta Noire
Ford 1
2 Citroën C4 Blanche
Citroën 2
3 Renault Clio Rouge
4 Peugeot 307 cc Noire Renault 2
5 Citroën C3 Bleue Peugeot 1
6 Renault Twingo Noire
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 49
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Exemple 2: Ecrire la requête SQL permettant d’afficher le nombre de personne par ville
Personne
Ville Compte
NumAch Nom Age Ville
1 yassin 42 Agadir Agadir 2
2 Imane 33 Casablanca Casablanca 1
3 Reda 30 Rabat Rabat 1
4 Meryem 42 Agadir
Marrakech 1
5 Walid 27 Marrakech
SELECT Ville, COUNT(*) AS Compte
FROM Personne
GROUP BY Ville;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 50
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Exemple 3: Ecrire la requête SQL permettant d’afficher la somme des prix de ventes de voiture par
marque
Voiture Vente
Marque SommePrix
NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
Ford 70000
1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Citroën C4 Blanche 2 4 2010-12-02 55000 Citroën 135000
3 Renault Clio Rouge 4 5 2009-08-26 40000 Peugeot 40000
4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
SELECT Marque, SUM(Prix) AS SommePrix
FROM VOITURE JOIN VENTE
ON [Link]=[Link]
GROUP BY Marque;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 51
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Exemple 4: Ecrire la requête SQL permettant d’afficher la somme des prix de ventes de voiture par Ville
Vente Personne
NumAch NumVoit DateVente Prix NumAch Nom Age Ville Ville SommePrix
1 1 2013-02-12 70000 1 yassin 42 Agadir Agadir 110000
2 4 2010-12-02 55000 2 Imane 33 Casablanca Casablanca 55000
4 5 2009-08-26 40000 3 Reda 30 Rabat
Rabat 40000
5 2 2011-09-10 80000 4 Meryem 42 Agadir
Marrakech 80000
5 Walid 27 Marrakech
SELECT Ville, SUM(Prix) AS SommePrix
FROM Personne JOIN VENTE
ON [Link]=[Link]
GROUP BY Ville ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 52
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Remarque : La clause HAVING va de pair avec GROUP BY, il permet d’indiquer une restriction sur les
groupes crées grâce à la clause GROUP BY.
Exemple 4 : Compléter la requête SQL suivante pour qu’elle nous récupère la liste des différentes
marques de voitures avec le nombre d’exemplaires, dont le nombre est supérieur à 1.
Voiture
NumVoit Marque Modele Couleur Marque Compte
SELECT Marque, COUNT(*) AS Compte 1 Ford Fiesta Noire
Ford 1
2 Citroën C4 Blanche
FROM VOITURE Citroën 2
3 Renault Clio Rouge
GROUP BY MARQUE ; 4 Peugeot 307 cc Noire
Renault 2
5 Citroën C3 Bleue Peugeot 1
6 Renault Twingo Noire
SELECT Marque, COUNT(*) AS Compte
Marque Compte
FROM VOITURE
Citroën 2
GROUP BY MARQUE
Renault 2
HAVING Compte >1;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 53
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
6- Regroupement des données
Exemple 5 : Compléter la requête SQL suivante pour qu’elle nous récupère la liste des différentes
marques de voitures avec le nombre d’exemplaires, dont le nombre est supérieur à 1 sans compter
les voitures de couleur rouge. Voiture
NumVoit Marque Modele Couleur Marque Compte
SELECT Marque, COUNT(*) AS Compte 1 Ford Fiesta Noire
Ford 1
2 Citroën C4 Blanche
FROM VOITURE Citroën 2
3 Renault Clio Rouge
GROUP BY MARQUE ; 4 Peugeot 307 cc Noire
Renault 2
5 Citroën C3 Bleue Peugeot 1
6 Renault Twingo Noire
SELECT Marque, COUNT(*) AS Compte
Marque Compte
FROM VOITURE
Citroën 2
WHERE Couleur NOT LIKE 'Rouge'
GROUP BY MARQUE
HAVING Compte >1;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 54
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
SQL permet de comparer une expression ou une colonne ou résultat d’ une autre requête
SELECT. Cette condition est dite « condition de sous-requête » et les 2 requêtes sont dites requête
imbriquées.
Les requêtes imbriquées dans SQL peuvent être utilisés pour comparer une expression ou une
liste d’ expression au résultat d’une autre requête SELECT, déterminer l’appartenance d’une
expression ou l’ existence d’ une ligne dans le résultat d’ une requête SELECT etc.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 55
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple1 :
Afficher les numéros et prix des voitures dont le prix est supérieur à la moyenne des prix de vente.
Vente
NumAch NumVoit DateVente Prix
1 1 2013-02-12 70000
2 4 2010-12-02 55000
4 5 2009-08-26 40000
5 2 2011-09-10 80000
SELECT NumVoit, Prix NumVoit Prix
1 70000
FROM Vente
2 80000
WHERE Prix > (SELECT AVG(Prix) FROM Vente)
AVG(Prix)
61250
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 56
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple2 :
Ecrire la requête SQL qui permet de récupérer la marque et le modèle des voitures dont le prix dépasse
45000. Voiture
NumVoit Marque Modele Couleur Vente
1 Ford Fiesta Noire
NumAch NumVoit DateVente Prix
2 Citroën C4 Blanche
1 1 2013-02-12 70000
3 Renault Clio Rouge
2 4 2010-12-02 55000
4 Peugeot 307 cc Noire
4 5 2009-08-26 40000
5 Citroën C3 Bleue
5 2 2011-09-10 80000
6 Renault Twingo Noire
Marque Modele
SELECT Marque , Modele
Ford Fiesta
FROM Voiture WHERE NumVoit IN ( SELECT NumVoit
FROM Vente Citroën C4
WHERE Prix > 45000 NumVoit
Peugeot 307 cc
); 1
4 Attention : la sous-requête doit avoir
une seule colonne comme résultat
2
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 57
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple2 :
Ecrire la requête SQL qui permet de récupérer la marque et le modèle des voitures dont le prix dépasse
45000. Voiture
NumVoit Marque Modele Couleur Vente
1 Ford Fiesta Noire
NumAch NumVoit DateVente Prix
2 Citroën C4 Blanche
1 1 2013-02-12 70000
3 Renault Clio Rouge
2 4 2010-12-02 55000
4 Peugeot 307 cc Noire
4 5 2009-08-26 40000
5 Citroën C3 Bleue
5 2 2011-09-10 80000
6 Renault Twingo Noire
Réécrire cette requête en utilisant la jointure.
SELECT Marque , Modele Marque Modele
FROM Voiture JOIN VENTE Ford Fiesta
Citroën C4
ON [Link] = [Link]
Peugeot 307 cc
WHERE Prix > 45000 ;
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 58
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 3 :
Ecrire la requête SQL qui permet de récupérer les noms et les âges des personnes qui n’ont acheté
aucune voiture
Personne Vente
NumAch Nom Age Ville
NumAch NumVoit DateVente Prix
1 yassin 42 Agadir
1 1 2013-02-12 70000
2 Imane 33 Casablanca
2 4 2010-12-02 55000
3 Reda 30 Rabat
4 5 2009-08-26 40000
4 Meryem 42 Agadir
5 2 2011-09-10 80000
5 Walid 27 Marrakech
SELECT Nom, Age
FROM Personne Nom Age
WHERE Numach NOT IN ( SELECT NumAch
Reda 30
FROM Vente
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 59
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 3 :
Ecrire la requête SQL qui permet de récupérer les noms et les âges des personnes qui n’ont acheté
aucune voiture
Personne Vente
NumAch Nom Age Ville
NumAch NumVoit DateVente Prix
1 yassin 42 Agadir
1 1 2013-02-12 70000
2 Imane 33 Casablanca
2 4 2010-12-02 55000
3 Reda 30 Rabat
4 5 2009-08-26 40000
4 Meryem 42 Agadir
5 2 2011-09-10 80000
5 Walid 27 Marrakech
On peut obtenir le même résultat en utilisant un cas jointure spécial appelé semi-jointure gauche.
SELECT Nom, Age
FROM Personne AS P LEFT JOIN Vente AS V Nom Age
Reda 30
ON [Link]=[Link]
WHERE [Link] IS NULL
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 60
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 4 : Afficher les marques des voitures les plus chères
Voiture Vente
NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
• Sans Jointure.
SELECT Marque
FROM Voiture
WHERE NumVoit IN (SELECT NUMVOIT
Marque
FROM VENTE
WHERE PRIX=(SELECT MAX(Prix) Citroën
FROM VENTE)
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 61
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 4 : Afficher les marques des voitures les plus chères
Voiture Vente
NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
• Avec Jointure.
SELECT Marque
FROM Voiture JOIN VENTE
ON [Link] = [Link]
Marque
WHERE PRIX=(SELECT MAX(Prix)
FROM VENTE) Citroën
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 62
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 5 : Afficher les marques des voitures les plus vendues
Voiture Vente
NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 63
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
7- Sous requêtes:
Exemple 5 : Afficher les marques des voitures les plus vendues
SELECT Max(compte)
FROM ( SELECT COUNT(*) AS Compte Nombre de voitures
vendues par marque
FROM Voiture JOIN Vente
Compte
ON [Link]=[Link] 2
Group BY Marque 1
1
);
Max(compte)
2
SELECT Marque , Count(*)
Marque Count(*)
From Voiture JOIN Vente
Citroën 2
ON [Link]=[Link] Ford 1
GROUP BY Marque; Peugeot 1
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 64
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Exemple 5 : Afficher les marques des voitures les plus vendues
SELECT Marque
From Voiture JOIN Vente Nombre de voitures
ON [Link]=[Link] vendues par marque
GROUP BY Marque Compte
2
Having Count(*) = ( SELECT Max(compte)
1
FROM (
SELECT COUNT(*) AS Compte 1
FROM Voiture JOIN Vente
ON [Link]=[Link] Max(compte)
Group BY Marque 2
)
); Marque
Citroën
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 65
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
7- Sous requêtes: Exemple 5 : Afficher les marques des voitures les plus vendues
Voiture Vente
NumVoit Marque Modele Couleur NumAch NumVoit DateVente Prix
1 Ford Fiesta Noire 1 1 2013-02-12 70000
2 Citroën C4 Blanche 2 4 2010-12-02 55000
3 Renault Clio Rouge 4 5 2009-08-26 40000
4 Peugeot 307 cc Noire 5 2 2011-09-10 80000
5 Citroën C3 Bleue
6 Renault Twingo Noire
SELECT Marque
From Voiture JOIN Vente
ON [Link]=[Link]
GROUP BY Marque
Having Count(*) = (
SELECT Max(compte) Marque
FROM (
Citroën
SELECT COUNT(*) AS Compte
FROM Voiture JOIN Vente
ON [Link]=[Link]
Group BY Marque
); )
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 66
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
8- Opérateurs binaires ensemblistes:
Union :
o Opération binaire ensembliste commutative
o Rôle : L'union génère une relation regroupant exclusivement toutes les occurrences de
la relation R1 et toutes les occurrences de la relation R2.
o Si une même occurrence existe dans R1 et dans R2, elle n'apparaît qu'une seule fois
dans le résultat de l'union.
o Contrainte : R1 et R2 doivent avoir les mêmes attributs.
o Le résultat de l'union est une nouvelle relation qui a les mêmes attributs que R1 et R2.
Algèbre Relationnel SQL
SELECT * FROM R1
R1 ∪ R2 UNION
SELECT * FROM R2
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 67
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
8- Opérateurs binaires ensemblistes:
Union :
Personne1 Personne2
Nom Prénom Nom Prénom
FIKRI HASSAN ESSAHEL MORAD
ALAMI AHMED IBRAHIMI LOUBNA
IBRAHIMI LOUBNA FIKRI AMINA
Algèbre Relationnel SQL
SELECT * FROM Personne1
Personne1 ∪ Personne2 UNION
SELECT * FROM Personne2
Nom Prénom
FIKRI HASSAN
ALAMI AHMED
IBRAHIMI LOUBNA
ESSAHEL MORAD
FIKRI AMINA
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 68
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
8- Opérateurs binaires ensemblistes:
Division :
o Opération binaire ensembliste non commutative
o Rôle : La division génère une relation regroupant exclusivement toutes les parties
d'occurrence de la relation R1 qui sont associées à toutes les occurrences de la relation
R2.
o Contrainte : R2 ne peut pas être vide. Tous les attributs de R2 doivent être présents
dans R1. R1 doit posséder au moins un attribut de plus que R2.
o Le résultat de la division est une nouvelle relation qui a tous les attributs de R1 sans
aucun de ceux de R2.
Algèbre Relationnel SQL
Il n’existe pas un opérateur de DIVISION en SQL, mais on
R1 ÷ R2 peut combiner plusieurs instructions pour exprimer la
division.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 69
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
Langage de manipulation des données
8- Opérateurs binaires ensemblistes:
Division :
Enseignement Etudiant Enseignement ÷ Étudiant
nomEnseignant nomEtudiant nomEtudiant nomEnseignant
FAOUZI Dubois Dubois FAOUZI
Fidus Pascal Pascal Fidus
Robert Dubois
FAOUZI Pascal Algèbre Relationnel SQL
Fidus Dubois
FAOUZI Durand Il n’existe pas un opérateur
Enseignement ÷ Étudiant
Robert Durand de DIVISION en SQL.
SQL
SELECT nomEnseignant
FROM Enseignement E1 JOIN Etudiant E2
ON [Link]=[Link]
GROUP BY nomEnseignant
Having COUNT([Link]) = (SELECT count(NomEtudiant) from Etudiant)
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 70
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Une « vue » est le résultat d’une requête SELECT que l’on peut manipuler de la même
façon qu’une table. On peut considérer une vue comme une table dynamique (virtuelle)
dont le contenu est recalculé à chaque utilisation. (Les données ne sont pas stockées dans
une vue de la base).
Exemple1:
CREATE VIEW Acheteur (Nom, Age) AS La vue Acheteur peut être utilisée par
SELECT Nom, Age la suite dans une requête select
comme une table
FROM personne ;
Une vue sert à :
L’exploiter dans une autre requête (SELECT)
Les vues permettent ainsi de décomposer l’écriture des requêtes complexes.
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 71
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Exemple 2: Afficher la(les) marque(s) des voitures la(les) plus vendue(s)
Version 1 : Sans Utilisation de vue :
SELECT Marque
From Voiture JOIN Vente
ON [Link]=[Link]
GROUP BY Marque
HAVING Count(*)=(SELECT Max(compte)
FROM ( SELECT COUNT(*) AS Compte
FROM Voiture JOIN Vente
ON [Link]=[Link]
Group BY Marque
)
);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 72
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Exemple 2: Afficher la(les) marque(s) des voitures la(les) plus vendue(s)
Version 1 : Sans Utilisation de vue :
SELECT Max(compte)
FROM ( SELECT COUNT(*) AS Compte Nombre de voitures
vendues par marque
FROM Voiture JOIN Vente
Compte
ON [Link]=[Link] 2
Group BY Marque 1
1
);
Max(compte)
2
SELECT Marque , Count(*)
Marque Count(*)
From Voiture JOIN Vente
Citroën 2
ON [Link]=[Link] Ford 1
GROUP BY Marque; Peugeot 1
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 73
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Exemple 2: Afficher la(les) marque(s) des voitures la(les) plus vendue(s)
Version 1 : Sans Utilisation de vue :
SELECT Marque
From Voiture JOIN Vente Nombre de voitures
ON [Link]=[Link] vendues par marque
GROUP BY Marque Compte
2
Having Count(*) = ( SELECT Max(compte)
1
FROM (
SELECT COUNT(*) AS Compte 1
FROM Voiture JOIN Vente
ON [Link]=[Link] Max(compte)
Group BY Marque 2
)
); Marque
Citroën
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 74
Introduction aux bases de données
Langage de description des données
Mise à jour des données
Langage de manipulation des données
9- Création d’une vue:
Exemple 2: Afficher la(les) marque(s) des voitures la(les) plus vendue(s)
Version 2 : Avec Utilisation de vue :
Création de la vue V suivante:
Marque Compte CREATE VIEW V AS
Citroën 2 SELECT Marque,COUNT(*) AS Compte
Ford 1 FROM Voiture JOIN Vente
Peugeot 1
ON [Link]=[Link]
Group BY Marque;
Utilisation de la vue V :
SELECT Marque
Marque FROM V
Citroën
WHERE Compte= (SELECT Max(Compte)
FROM V);
GUEROIHI MOHAMED CPGE AL QALAM-AGADIR 2020-2021 75