Académique Documents
Professionnel Documents
Culture Documents
S. Bringay
L2 MIASHS
Chapitre 5
Requêtes avancées
Modifier le SELECT
Modifier le SELECT
➲ AS : Renommage des attributs du schéma cible
Titre
SELECT Titre
La reine margot
FROM FILM Possession
WHERE Acteur=‘Adjani’ Adèle
4
Modifier le SELECT
➲ AS : Renommage des attributs du schéma cible
Titre
SELECT Titre
La reine margot
FROM FILM Possession
WHERE Acteur=‘Adjani’ Adèle
5
Modifier le SELECT
➲ Ensembles et multi-ensembles
– {1, 2, 1, 3} est un multi-ensemble
– {1, 2, 3} est un ensemble simple
Prenom Nom
Ethan Coen
Joel Coen
Quentin Tarentino
6
Modifier le SELECT
➲ Ensembles et multi-ensembles
– {1, 2, 1, 3} est un multi-ensemble
– {1, 2, 3} est un ensemble simple
Prenom Nom
Nom
Ethan Coen Coen
Joel Coen Tarentino
Quentin Tarentino
7
Modifier le SELECT
8
Modifier le SELECT
Titre duree_en_minutes
La reine margot 75
Possession 90
Adèle 78
9
Fonctions
10
Quand utiliser une fonction ?
➲ Dans le SELECT
➲ Dans le WHERE
SELECT nom
FROM ACTEUR
WHERE LEFT(nom, 2)= 'Sp'
Afficher les noms des acteur qui commencent par Sp comme Spilberg
11
Fonctions
➲ Chaine de caractères
– LENGTH()
– REPLACE()
– SUBSTRING()
– LEFT()
– RIGHT()
– REVERSE()
https://sql.sh/fonctions/chaines-de-
– UPPER() caracteres
– LOWER()
– …
12
Fonctions
➲ Math https://sql.sh/fonction
– RAND()
s/mathematiques
– ROUND()
– …
➲ Date
– DATEDIFF() https://sql.sh/fonctions/date-
– MONTH() heure
– YEAR()
– NOM()
– …
13
Conditions de la clause WHERE
Conditions de la clause WHERE
➲ Comparateurs habituels : =, <, >, <=, >= , <> ou !=
– WHERE prix_TVA = prix * 20 / 100
➲ Valeur nulle
– WHERE adresse IS NULL https://sql.sh/cours/where/is
15
Conditions de la clause WHERE
➲?
SELECT Titre
FROM Film
WHERE Acteur IN (Adjani, Marielle, Dujardin)
11/09/18 sandra.bringay@univ-montp3.fr 16
Conditions de la clause WHERE
SELECT Titre
FROM Film
WHERE Acteur IN (Adjani, Marielle, Dujardin)
11/09/18 sandra.bringay@univ-montp3.fr 17
Conditions de la clause WHERE
➲?
SELECT Titre
FROM Film
WHERE budget BETWEEN 190 AND 300
11/09/18 sandra.bringay@univ-montp3.fr 18
Conditions de la clause WHERE
➲ Titre des films ayant coutés entre 190 et 300M
euros
SELECT Titre
FROM Film
WHERE budget BETWEEN 190 AND 300
11/09/18 sandra.bringay@univ-montp3.fr 19
Conditions de la clause WHERE
➲?
SELECT *
FROM FILM
WHERE langue IS NULL
11/09/18 sandra.bringay@univ-montp3.fr 20
Conditions de la clause WHERE
➲ Toutes les informations sur les films pour
lesquels l’information sur la langue n’a pas été
saisie
SELECT *
FROM FILM
WHERE langue IS NULL
11/09/18 sandra.bringay@univ-montp3.fr 21
Conditions de la clause WHERE
➲ Connecteurs de conditions : OR, AND
https://sql.sh/cours/where/and-or
SELECT Titre
FROM FILM
WHERE Acteur=’Adjani’ OR realisateur=’Poirier’
SELECT Titre
FROM FILM
WHERE Acteur=’Adjani’ AND realisateur=’Poirier’
22
Conditions de la clause WHERE
➲ Connecteurs de conditions : OR, AND
https://sql.sh/cours/where/and-or
SELECT Titre
FROM FILM
WHERE Acteur=’Adjani’ OR realisateur=’Poirier’
Sélection des titres des films dans lesquels Adjani a joué ou qui ont été
réalisés par Poirier
SELECT Titre
FROM FILM
WHERE Acteur=’Adjani’ AND realisateur=’Poirier’
Sélection des titres des films dans lesquels Adjani a joué ET qui ont été
réalisés par Poirier
23
Conditions de la clause WHERE
➲ Contraire d’une condition : NOT
SELECT Acteur
FROM FILM
WHERE Acteur NOT LIKE 'T%’
24
Conditions de la clause WHERE
➲ Contraire d’une condition : NOT
SELECT Acteur
FROM FILM
WHERE Acteur NOT LIKE 'T%’
25
Exercice 1
➲ Soit le schéma suivant
– CLIENT (N°C, NomC, AdrC, CP, Ville, Tél, CondPart)
– PRODUIT (N°P, Description, Prix, QtéP, Ville)
– COMMANDE (N°Comm, N°C, N°P, QtéC, DateC)
27
Exercice 1 (Correction)
28
Agrégats
Agrégats
PB : si un même film de Bergman est plusieurs fois à l’affiche, il est compté plusieurs
fois !
30
Agrégats
PB : si un même film de Bergman est plusieurs fois à l’affiche, il est compté plusieurs
fois !
31
Agrégats par groupement
➲ Nombre d’acteurs par film
SELECT Titre, COUNT (distinct Acteur)
FROM FILM
GROUP BY Titre
➲ (1) Projection, (2) regroupement, (3) calcul de l’agrégat (multi-
ensemble)
T R A
t1 r1 a1
Titre,
réalisateur, t1 r1 a2
acteur t1 r1 a3
t2 r4 a2
t1 r2 a1
t1 r2 a2
t1 r2 a3
32
Agrégats par groupement
➲ Nombre d’acteurs par film
SELECT Titre, COUNT (distinct Acteur)
FROM FILM
GROUP BY Titre
➲ (1) Projection, (2) regroupement, (3) calcul de l’agrégat (multi-
ensemble)
T A
T R A
t1 a1
t1 r1 a1
Titre, t1 a2
réalisateur, t1 r1 a2
t1 a3
acteur t1 r1 a3
t1 a1
t2 r4 a2
t1 a2
t1 r2 a1
t1 a3
t1 r2 a2
t2 a2
t1 r2 a3
33
Agrégats par groupement
➲ Nombre d’acteurs par film
SELECT Titre, COUNT (distinct Acteur)
FROM FILM
GROUP BY Titre
➲ (1) Projection, (2) regroupement, (3) calcul de l’agrégat (multi-
ensemble)
T A
T R A
t1 a1
t1 r1 a1
Titre, t1 a2
réalisateur, t1 r1 a2
t1 a3
acteur t1 r1 a3
t1 a1
t2 r4 a2
t1 a2
t1 r2 a1
t1 a3
t1 r2 a2
t2 a2
t1 r2 a3
34
Agrégats par groupement
➲ Nombre d’acteurs par film
SELECT Titre, COUNT (distinct Acteur)
FROM FILM
GROUP BY Titre
➲ (1) Projection, (2) regroupement, (3) calcul de l’agrégat (multi-
ensemble)
T A
T R A
t1 a1 T
t1 r1 a1
Titre, t1 a2 t1 3
réalisateur, t1 r1 a2
t1 a3 t2 1
acteur t1 r1 a3
t1 a1
t2 r4 a2
t1 a2
t1 r2 a1
t1 a3
t1 r2 a2
t2 a2
t1 r2 a3
35
Agrégats par groupement
➲ Nombre d’acteurs par film
SELECT Titre, COUNT (Acteur) -- pas de distinct
FROM FILM
GROUP BY Titre
➲ (1) Projection, (2) regroupement, (3) calcul de l’agrégat (multi-ensemble)
T A
T R A
t1 a1 T
Film, t1 r1 a1
t1 a2 t1 6
réalisateur, t1 r1 a2
t1 a3 t2 1
acteur t1 r1 a3
t1 a1
t2 r4 a2
t1 a2
t1 r2 a1
t1 a3
t1 r2 a2
t2 a2
t1 r2 a3
36
Agrégats – sélection des groupes
➲ Elimination des groupes ne satisfaisant pas la condition
38
Exercice 2 (Correction)
➲ Soit le schéma suivant
– CLIENT (N°C, NomC, AdrC, CP, Ville, Tél, CondPart)
– PRODUIT (N°P, Description, Prix, QtéP, Ville)
– COMMANDE (N°Comm, N°C, N°P, QtéC, DateC)