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