ISGI – Licence GI
Cours
Base de données relationnelles
2024 2025
Mohamed El Hacen Mohamed Dyla
mohdyla@[Link]
cours 4
Le langage SQL
LMD
présentation du SQL
Projection
restriction
Le tri
Produit cartésien
jointure
Union, intersection, EXCEPT)
Fonctions d’agrégation,
sous-requetes,insert,update,drop
LDD : CREATE, DROP, ALTER
Introduction : présentation du SQL
SQL
Structured Query Language
Le langage structuré de requêtes permet :
◼ De manipuler les bases de données quel que soit le
logiciel utilisé
◼ De réaliser des requêtes
◼ SELECT
Les instructions SQL ◼ FROM
◼ WHERE
◼ ORDER BY
15
Construction d'une requête SQL
Quoi ? quelles informations obtenir ?
Où ? dans quelles tables ?
Comment ? (jointures, restrictions…)
La projection
Thème - Requête n° 1 :
Afficher la liste des adhérents (Nom, Prénom, Code
postal, Ville)
Quoi ? SELECT Nom_adh, Prénom_adh, Cp_adh, Ville_adh
Où ? FROM ADHERENT
La projection
SELECT Critère de projection. C’est un ordre qui décrit les
champs que l’on désire extraire et afficher.
FROM C’est une clause qui précise les tables
nécessaires à la requête.
La présence de FROM est obligatoire et suit
SELECT.
La restriction
Thème - Requête n° 2 :
Afficher la liste des adhérents (numéro,
nom, prénom, index) dont l’index est
inférieur à 20
Quoi ? SELECT Num_adh, Nom_adh, Prénom_adh, Index_adh
Où ? FROM ADHERENT
Comment ? WHERE Index_adh < 20
La restriction
C’est une clause qui décrit les critères de
restriction.
S’il n’y a pas de restriction, la ligne WHERE
n’existe pas.
Le tri
Thème - Requête n° 3 :
Afficher la liste des adhérents (nom,
prénom, code postal, ville) dans
l’ordre alphabétique du nom.
Quoi ? SELECT Nom_adh, Prénom_adh, Cp_adh, Ville_adh
Où ? FROM ADHERENT
ORDER BY Nom_adh
Tri sur le nom
Le tri
C’est une clause qui décrit les critères de TRI.
L’ordre croissant est traduit par ASC.
L’ordre décroissant est traduit par DESC.
En l’absence de paramètre, c’est ASC qui est
retenu par défaut.
Traduction du produit cartésien
SELECT *
FROM relation1, relation2
Produire toutes les combinaisons possibles de
fournisseur et de pièce
SELECT *
FROM fournisseur, pièce Exp. Algébr.
équivalente
PRODUCT ( fournisseur,
pièce )
11
Traduction de la jointure
SELECT attribut1 [,attribut2, …]
FROM relation1,relation2 [,relation3,…]
WHERE condition
Cette commande SELECT combine
–produit cartésien entre relation1,relation2, relation3…
–restriction sur condition
–Projection sur attribut1,attribut2…
N.B. Il faut préfixer par un nom de relation chaque attribut
commun à plusieurs relations
12
Jointure : exemple de requête
projection
nop,[Link]…
Liste des ventes avec le nom du
fournisseur
restriction
[Link] =
[Link]
SELECT nop,[Link],nomf
FROM vente, fournisseur
Produit cartésien
WHERE [Link] = [Link] x
vente fournisseur
Arbre algébrique correspondant à
l’expression SQL (SGBDR)
13
Jointure : utilisation d'alias
Utilisation d’alias pour alléger l’écriture d'une requête incluant des jointures
Liste des ventes avec le nom du fournisseur
SELECT [Link],[Link],[Link]
FROM vente v, fournisseur f
WHERE [Link] = [Link]
➢vente alias v
➢ fournisseur alias f
14
Opérations ensemblistes
(UNION, INTERSECT, EXCEPT)
Noms et prénoms des employés qui sont aussi des passagers
Employé Passager
noEmp nomEmp prénomEmp noPass nomPass prénomPass
10 Henry John 4 Harry Peter
15 Conrad James 78 Conrad James
35 Jenqua Jessica 9 Land Robert
46 Leconte Jean 466 Leconte Jean
(SELECT nomEmp as nom, prénomEmp as prénom
FROM Employé)
nom prénom
INTERSECT
(SELECT nomPass as nom, prénomPass as prénom Conrad James
FROM Passager) Leconte Jean
15
Expression de calcul dans la liste de
projection (partie SELECT)
Liste des numéros de pièce avec le prix avant et
après inclusion d’une taxe de 10%
SELECT nop, prix, prix*1.1 as prixTTC
FROM pièce
nop prix prixTTC
1 1.5 1.65
2 2 2.2
3 2.5 2.75
16
Expression de calcul dans la condition
(partie WHERE ou partie SELECT)
Une condition peut comporter une expression de calcul
Liste des numéros de pièce dont le prix TTC dépasse 2€
SELECT nop
FROM pièce
WHERE prix*1.1
> 2
nop
2
3
17
Expression de calcul dans la condition
(partie WHERE)
Une expression peut aussi faire appel à des fonctions
Numéro et nom des pièces dont le nom comporte 4
caraScEtèLrEeCsTou plunsop, nomp
FROM pièce
WHERE CHARACTER_LENGTH(nomp) >= 4
nop nomp
2 écrou
3 boulon
CHARACTER_LENGTH ( c ) : fonction retournant le nombre de caractères
de la chaîne c
18
Fonctions d’agrégation (ou de groupe)
Elles opèrent sur un groupe de valeurs d’attributs et produisent
une valeur résultat
Nombre total de pièces dans la relation pièce
SELECT COUNT(*) AS nb_pieces nb_pieces
FROM pièce 3
Prix moyen des pièces
SELECT AVG (prix) AS prix_moyen prix_moyen
FROM pièce 2
Prix maximal des pièces (maximum de la colonne prix)
prix_maxi
SELECT MAX(prix) AS prix_maxi
FROM pièce 2.5
19
Fonctions d’agrégation (ou de groupe)
Prix minimal des pièces (minimum de la
coSloEnLEnCeTpMrIixN)(prix) AS prix_mini prix_mini
FROM pièce 1.5
Somme des prix des pièces
SELECT SUM(prix) AS somme_totale somme_totale
FROM pièce 6
Somme des prix des pièces dont le numéro est supérieur ou
égaSlELàE2CT SUM (prix) AS somme
somme
FROM pièce
WHERE nop >= 2 4.5
20
Tri du résultat d’une requête (ORDER BY)
Possibilité de trier les résultats d’une requête par rapport à
une ou plusieurs colonnes
SELECT colonne(s)
FROM relation(s) [WHERE condition]
ORDER BY colonne(s) [ASC|DESC]
Où
ASC : ordre ascendant (par défaut)
DESC : ordre descendant
no p
liste des pièces par ordre décroissant d u prix nomp prix
SELECT * 3 boulon 2.5
FROM pièce
2 écrou 2
ORDER BY prix DESC
1 vis 1.5
21
Requêtes imbriquées
Opérateur IN / NOT IN
■ Lerésultat d’une commande SELECT peut être utilisé
dans la condition d’une autre commande SELECT
SELECT attribut(s)
FROM relation(s)
WHERE expression [NOT]IN (sous-requête)
On teste l’appartenance (ou non appartenance) de la valeur
de l'expression à l'ensemble retourné par la sous-requête
22
Requêtes imbriquées
Opérateur IN / NOT IN
Nom des pièces commandées par le fournisseur
numéro 1
SELECT nomp
FROM pièce
WHERE nop IN
(SELECT nop
FROM vente
WHERE nof = 1)
23
b) Définition de données
Suppression d'un schéma de relation
DROP TABLE nom-relation
✓ suppression du schéma de la relation
✓ suppression des tuples de la relation
Supprimer le schéma de la table
vente
DROP TABLE vente
✓ Suppression de tous les tuples de la table Client
✓ Suppression du schéma de la table vente
✓ On ne plus peut insérer de nouveaux tuples dans la table vente
24
c) Mise à jour des données
Ajout de tuples (INSERT)
INSERT INTO nom-relation [(attr1, attr2…)]
VALUES (val-attr1, val-attr2, … )
Ajout de deux pièces dans la relation pièce
INSERT INTO pièce VALUES (4,'clou’,1.99)
INSERT INTO pièce (nop,nomp) VALUES (5,'cheville’)
nop nomp prix
1 vis 1.5
N.B. Les attributs non insérés
2 écrou 2 sont positionnés à NULL
3 boulon 2.5
4 clou 1.99
5 cheville NULL
25
c) Mise à jour des données
Modification de tuples (UPDATE)
UPDATE nom_relation
SET attr1=exp1 [,attr2=exp2 … ]
[WHERE condition ]
Positionner à 0.99 le prix de la pièce numéro 4
UPDATE pièce SET prix= 0.99 WHERE nop=4
Augmenter de 5% le prix des pièces dont le nom
commence par c
UPDATE pièce
SET prix= prix*1.05
WHERE nomp LIKE 'c%'
26
c) Mise à jour des données
Suppression de tuples (DELETE)
DELETE [FROM] relation [WHERE condition]
Supprimer les fournisseurs de Lyon:
DELETE fournisseur WHERE ville = ‘Lyon’
Supprimer tous les tuples de la table vente :
DELETE vente
✓ suppression de tous les tuples de la table Client
✓ le schéma de la table vente existe toujours
✓ On peut insérer des nouveaux tuples dans la table vente
27
b) Définition de données
1. Création d'un schéma de relation
➢ CREATE TABLE
2. Suppression d'un schéma de relation
➢ DROP TABLE
28
b) Définition de données
Création d'un schéma de
rCerléaertileosnschémas des tables pièce, fournisseur,vente
pièce (nop, nomp, prix)
fournisseur (nof,nomf,ville)
vente (nop,nof )
CREATE TABLE pièce
(nop integer,
nomp varchar(50) NOT NULL,
prix float,
PRIMARY KEY (nop))
CREATE TABLE fournisseur
(nof integer,
nomf varchar(80) NOT NULL,
ville varchar(60),
PRIMARY KEY (nof))
29
b) Définition de données
Création d'un schéma de
relation
CREATE TABLE vente
(nop integer REFERENCES pièce(nop),
nof integer REFERENCES fournisseur(nof),
PRIMARY KEY (nop,nof))
– L'attribut nop dans la table vente fait référence à l'attribut
nop de la table pièce
– L'attribut nof dans la table vente fait référence à l'attribut
nof de la table fournisseur
30
b) Définition de données
Types de données
Type de données d'un attribut = domaine des valeurs
■ INTEGER : nombres entiers
■ FLOAT : nombres réels
■ CHAR(n) : chaînes de caractères de longueur fixe
n
■ VARCHAR(n) : chaînes de caractères de longueur
variable et de longueur maximale n
31
Exemple de base de données
32
Exemple de base de données
33
Contraintes d’intégrité
34
Contraintes d’intégrité sur un attribut
35
Contraintes d’intégrité sur une table
36
Groupement
37
Groupement
38
Groupement
39
Groupement
40