Académique Documents
Professionnel Documents
Culture Documents
1
SQL: Trois langages C. Vangenot
2
SQL : partie langage de requêtes
3
Structure générale d’une requête :
le BLOC C. Vangenot
4
SQL/Algèbre C. Vangenot
5
SQL / Algèbre … Identité C. Vangenot
En algèbre : En SQL :
Id(R) SELECT *
FROM R
6
Exemple de requête
C. Vangenot
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
7
SQL / Algèbre … Sélection C. Vangenot
En algèbre : En SQL :
σ[condition] R SELECT *
FROM R
WHERE condition
8
Exemple de requête de sélection C. Vangenot
algèbre:
SELECT *
σ[population < 20] Pays FROM Pays
WHERE population < 20 ;
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
En algèbre : En SQL :
π [ A1, A2,…, An] R SELECT A1,A2,…An
FROM R
10
Exemple de requête de projection C. Vangenot
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
11
Projection - selection C. Vangenot
FROM <liste-tables>
12
SELECT nom, capitale, population
sélection +
projection FROM Pays C. Vangenot
14
SQL / Algèbre … Produit cartésien C. Vangenot
En algèbre : En SQL :
R×S SELECT *
FROM R, S
15
Exemple
C. Vangenot
SELECT * FROM R, S
A B C D E
a b c d e
a b b a b
a b a a c
R A B S C D E b c c d e
a b c d e b c b a b
b c b a b b c a a c
c b c b c d e
a a c c b b a b
c b a a c
16
Exemple II
PAYS C. Vangenot
JO
nom capitale population surface
année lieu pays
Irlande Dublin 3 70
1896 Athènes Grèce
Autriche Vienne 8 83
1900 Paris France
RU Londres 36 244
1904 St.Louis USA Suisse Berne 7 41
1908 Londres RU
USA Washington 189 441
17
SQL / Algèbre … Jointure C. Vangenot
En SQL :
En algèbre : SELECT *
R S FROM R, S
WHERE R.A1 = S.A1
AND R.A2 = S.A2
…
AND R.An = S.An
Avec A1, …, An tous les
attributs communs à R et S
18
Jointure de 2 relations
C. Vangenot
JO SELECT année, lieu, pays,
année lieu pays capitale
1896 Athènes Grèce FROM JO, PAYS
WHERE JO.pays = PAYS.nom;
1900 Paris France
1904 St.Louis USA
1908 Londres Royaume-Uni
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
19
Jointure de 2 relations: résultat
C. Vangenot
JO PAYS
année lieu pays nom capitale population surface
21
Jointure sur la même table C. Vangenot
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
PAYS
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
Royaume-Uni Londres 36 244
Suisse Berne 7 41
22 USA Washington 189 441
PAYS-P1
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83 SELECT P1.nom, P1.population,
RU Londres 36 244
Suisse Berne 7 41 P2.nom, P2.population C. Vangenot
USA Washington 189 441
FROM PAYS P1, PAYS P2
PAYS-P2
WHERE P1.population > P2.population
nom capitale population surface
Irlande Dublin 3 70
Autriche Vienne 8 83
RU Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
P1.population > P2.population
résultat
nom-P1 pop-P1 nom-P2 pop-P2
Autriche 8 Irlande 3
Autriche 8 Suisse 7
RU 36 Irlande 3
RU 36 Autriche 8
RU 36 Suisse 7
23
Jointure externe C. Vangenot
24
Jointure externe C. Vangenot
25
Jointure externe
JO PAYS
nom capitale population surface
année lieu pays C. Vangenot
Irlande Dublin 3 70
1896 Athènes Grèce
Autriche Vienne 8 83
1900 Paris France Royaume-Uni Londres 36 244
1904 St.Louis USA Suisse Berne 7 41
1908 Londres Royaume-Uni USA Washington 189 441
Résultat
année lieu pays capitale
1896 Athènes Grèce NULL
1900 Paris France NULL
1904 St Louis USA Washington
En algèbre : En SQL :
R∪S BlocR UNION BlocS
SELECT *
FROM R
UNION
SELECT *
Les tuples en double sont éliminés
FROM S
du résultat
27
SQL / Algèbre … intersection C. Vangenot
En algèbre : En SQL :
BlocR INTERSECT BlocS
R∩S
SELECT *
FROM R
INTERSECT
SELECT *
FROM S
Les tuples en double sont éliminés
du résultat
28
SQL / Algèbre … différence C. Vangenot
En algèbre : En SQL :
R−S BlocR MINUS BlocS
SELECT *
FROM R
MINUS
SELECT *
Les tuples en double sont éliminés
FROM S
du résultat
29
Différences C. Vangenot
En SQL :
– Le résultat d'une requête peut contenir plusieurs
occurrences d’un n-uplet,
pour avoir une seule occurrence de chaque n-uplet dans
une relation : DISTINCT
Exemple : select DISTINCT nom
from Personne
– Le résultat d'une requête peut être trié,
– Il existe une valeur spéciale dite indéfinie (NULL)
utilisée pour remplir un champ dont on ne connaît
pas la valeur.
30
Remarques C. Vangenot
31
Ecriture des conditions
32
Opérateurs de comparaison C. Vangenot
33
Opérateurs logiques C. Vangenot
Un des prédicats : OR
ex: WHERE population<10 OR surface<500
34
Expressions logiques
C. Vangenot
Combinaisons:
WHERE ( ensoleillement > 80% AND pluviosité < 200 )
OR température > 30
35
Appartenance à un ensemble: IN
C. Vangenot
36
Comparaison à un ensemble: ALL C. Vangenot
37
Valeur dans un intervalle: BETWEEN
C. Vangenot
Équivalent à:
WHERE population BETWEEN 50 AND 60
NOT BETWEEN
38
Conditions partielles (wildcards)
C. Vangenot
_ : exactement un caractère
WHERE pays LIKE ‘I_lande’
– -> Irlande, Islande
NOT LIKE
39
Valeurs calculées C. Vangenot
Valeurs numériques: + - * /
40 Chaines de caractères: ¦¦
‘NULL’ <> 0 !!! C. Vangenot
SELECT nom
FROM PAYS
WHERE population IS NULL
42
Opérations sur ‘NULL’ C. Vangenot
43
Résumé C. Vangenot
45
BD Exemple : Livraisons C. Vangenot
46
Jointure C. Vangenot
47
Jointure par blocs emboîtés : IN (∈)
C. Vangenot
49
Composition de conditions
C. Vangenot
50
Quantificateurs : ANY
C. Vangenot
51
Quantificateurs : ALL
C. Vangenot
ALL: tous les éléments de l'ensemble
doivent vérifier la condition
Numéros des fournisseurs qui ne fournissent que des
produits rouges
SELECT nf
FROM F
WHERE 'rouge' = ALL
( SELECT couleur
FROM P
WHERE np IN
( SELECT np
La requête imbriquée est FROM PUF
ré-évaluée pour chaque WHERE PUF.nf = F.nf ) )
;
tuple de la requête (ici
52pour chaque nf)
Conditions sur des ensembles: EXISTS
C. Vangenot
SELECT nomf
FROM F
WHERE EXISTS
( SELECT *
FROM PUF, P ce fournisseur
WHERE PUF.nf = F.nf
AND PUF.np = P.np
Produit fourni AND P.couleur = 'rouge' ) ;
est rouge
53
Recapitulation: blocs emboîtés C. Vangenot
55
Fonctions sur des colonnes C. Vangenot
Attributs calculés
– Ex: SELECT nom, population*1000/surface FROM PAYS
Opérateurs sur attributs numériques
– SUM: somme des valeurs des tuples sélectionnés
– AVG: moyenne
Opérateurs sur tous types d’attributs Opérateur
– MIN: minimum agrégation
– MAX: maximum
– COUNT: nombre de tuples sélectionnés
56
PAYS
nom capitale population surface continent
Irlande Dublin 3 70 Europe
C. Vangenot
Autriche Vienne 8 83 Europe
R-Uni Londres 36 244 Europe
Suisse Berne 7 41 Europe
USA Washington 189 441 Amerique
Europe 3 Irlande
Europe 8 Autriche
Amerique 189 USA
ASC/DESC
59
PAYS
62
Renommage du nom des attributs:
AS C. Vangenot
63
Vues
64
Vues C. Vangenot
65
Exemple C. Vangenot
PAYS
nom capitale population surface
Grèce Athènes 3 70
France Paris 8 83
RU Londres 36 244
Suisse Berne 7 41
USA Washington 189 441
Petit_pays
nom capitale population surface
Grèce Athènes 3 70
France Paris 8 83
66 Suisse Berne 7 41
Petit_pays
nom capitale population surface
Utilisation Grèce Athènes 3 70
France Paris 8 83C. Vangenot
Suisse Berne 7 41
67
Utilité C. Vangenot
Confidentialité
– Les utilisateurs n’ont le droit d’accéder qu’aux vues
Vue sur la table Employé destinée aux employés ne sélectionne pas la
colonne Salaire contrairement à la vue destinée aux chefs de service.
Présenter différentes perspectives sur les données aux
utilisateurs
– Renommage des colonnes
Mises à jour des tables transparentes aux utilisateurs
Cacher la complexité des données aux utilisateurs
– Vue simplifiée des données
Requêtes complexes
– Qui ne peuvent être faites sans vues
– Qui sont fréquemment réalisées
68
Syntaxe C. Vangenot
69
Syntaxe (2) C. Vangenot
71
Vue : exemple C. Vangenot
PAYS JO
nom capitale population surface
année lieu pays
Grèce Athènes 3 70
1896 Athènes Grèce
France Paris 8 83
1900 Paris France
RU Londres 36 244
Suisse Berne 7 41 1904 St. Louis USA
USA Washington 189 441 1908 York RU
72
Utilisation des Vues C. Vangenot
Capitale_olympique
année pays capitale
1896 Grèce Athènes
1900 France Paris
1904 USA Washington
1908 RU Londres
73