SQL : select simple

Transcription

SQL : select simple
Recherche des données
Syntaxe générale de recherche
Restriction et projection
Jointures
Opérateurs ensemblistes
Fonctions agrégats
Partitionnement
Prédicats et division
Synthèse
Exemple complet
slide 116
slide 117
slide 121
slide 124
slide 125
slide 129
slide 133
slide 138
slide 140
2
Recherche des données
Syntaxe
Comment remplir les clauses ?
SELECT
<liste d’attributs projetés>
Quel résultat souhaite voir l’utilisateur,
schéma du résultat ?
FROM
<liste de relations>
Où sont les attributs dont j’ai besoin ?
[WHERE
<liste des critères de restriction
et de jointure>]
"Donner les vins de cru Pommard"
SELECT num, annee, degre
FROM Vins
WHERE cru = ‘Pommard'
NUM ANNEE DEGRE
5
1976
11.70
Y-a t-il des conditions sur les valeurs
exprimées dans ma requête ? Ai-je
plusieurs relations dans ma clause
FROM ?
23
1972
12.00
Nombre de tuples accédés : 2
3
Bases de Données
Recherche des données
4
SQL - 1
Recherche des données
Recherche des données
"Donner les vins de degré compris entre 8 et 12"
"Donner tous les vins"
SELECT *
FROM Vins
WHERE degre >=8 AND degre <=12
SELECT *
FROM Vins
"Donner la liste de tous les crus, avec
élimination des doublons"
SELECT *
FROM Vins
WHERE degre BETWEEN 8 AND 12
SELECT DISTINCT cru
FROM Vins
SELECT *
FROM Vins
WHERE degre IN (8, 9, 10, 11, 12)
5
6
Recherche des données
"Donner les noms des producteurs de
Pommard"
"Donner les vins dont le cru commence par p ou P"
SELECT *
FROM Vins
WHERE cru LIKE ‘p%’ OR cru LIKE ‘P%’
Produit
SELECT nom
cartésien
FROM Vins V, Recoltes R, Producteurs P
WHERE V.num = R.nvin
AND
R.nprod=P.num
Conditions
de jointures
AND cru = ‘Pommard’
"Donner les crus des vins de millésime 1995 et de
degré 12, triés par ordre croissant"
SELECT cru
FROM Vins
WHERE annee=1995 AND degre = 12
ORDER BY cru
Nom d’attribut
non ambigü
7
Bases de Données
Recherche des données
8
SQL - 2
Recherche des données
SELECT nom
FROM Producteurs
WHERE num IN (
Recherche des données
Jointure d’une relation avec elle-même
synonymes
SELECT nprod
FROM Recoltes
WHERE nvin IN (
SELECT num
FROM Vins
WHERE cru = ‘Pommard’))
« Donner les couples de producteurs ayant le
même nom. Préciser les régions »
SELECT P1.nom, P1.region, P2.region
FROM Producteurs P1, Producteurs P2
WHERE P1.nom = P2.nom
AND P1.num > P2.num
9
10
Recherche des données
Union (norme SQL1)
Élimination automatique des doublons
SELECT num FROM Producteurs
UNION
SELECT num FROM Buveurs
Intersection (norme SQL2 !)
SELECT num FROM Producteurs
INTERSECT
SELECT num FROM Buveurs
Différence (norme SQL2 !)
SELECT num FROM Buveurs
MINUS
(ou EXCEPT)
SELECT num FROM Producteurs
11
Bases de Données
SQL - 3