0% ont trouvé ce document utile (0 vote)
15 vues75 pages

Introduction au Langage SQL et SGBD

Transféré par

elasriilyas2005
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues75 pages

Introduction au Langage SQL et SGBD

Transféré par

elasriilyas2005
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi