Chapitre 4 LE LANGAGE D INTERROGATION DE DONNÉES SQL 1. Définitions Clause : mot-clé Requête : interrogation ou action structurée sur la BD Requête d interrogation composée de l ensemble des clauses : SELECT FROM WHERE GROUP BY HAVING ORDER BY ; Table-résultat : table obtenue par l exécution d une requête NULL : non renseigné 0 2. Sélection de tables Clause FROM Signification : on travaillera sur la table livre Une requête ne peut pas être composée de la clause FROM seule. 3. Sélection de colonnes Clause SELECT, resume Signification de la requête : titres et résumés de tous les livres Calculs sur les colonnes On peut faire des calculs dans les clauses. de calcul sur 1 colonne, prix + 2.8 AS prix_augmentes Signification de la requête : titres et prix des livres augmentés de 2,8 de calcul entre colonnes, prix * (100 reduction) / 100 AS prix_reduit Signification de la requête : titres et prix réduits
4. Tri des lignes Clause ORDER BY Critères de tri : colonnes suivies de ASC ou DESC ORDER BY prix DESC ; Signification de la requête : titres de tous les livres triés par le prix décroissant 5. Sélection des lignes 5.1. Écriture des requêtes La sélection consiste à ne garder que les lignes qui vérifient la (ou les) condition(s) de sélection. Clause WHERE WHERE prix>50 ; Signification de la requête : titres des livres dont le prix est supérieur à 50 5.2. Écriture des conditions 5.2.1. Comparaisons arithmétiques de condition numedition BETWEEN 2 AND 4 Signification : numéros d édition compris entre 2 et 4 5.2.2. Comparaisons ensemblistes de condition langue IN ( Français, Espagnol ) Signification : en français ou espagnol 5.2.3. Comparaisons des chaînes de caractères Opérateur avec ordre alphabétique de condition nom LIKE R% Signification : dont le nom débute par R 5.2.4. Comparaisons avec la valeur NULL de condition resume IS NULL Signification : dont le résumé est inconnu
5.2.5. Comparaisons des booléens de condition disponibilite IS TRUE Signification : qui est disponible 5.2.6. Comparaisons des dates et temps de condition Opérateur avec ordre chronologique parution > 2009-01-01 Signification : paru après le 1er janvier 2009 5.3. Combinaisons de plusieurs conditions condition1 AND condition2 condition1 OR condition2 NOT( condition1 ) de condition nbpages>250 AND langue<> Français Signification : dont le nombre de pages est supérieur à 250 et qui est en français Attention à l imbrication des conditions Dès qu il y a plus de 2 conditions, il faut mettre des parenthèses pour imposer les priorités entre conditions. 6. Sélection de lignes distinctes Clause SELECT DISTINCT SELECT DISTINCT langue Signification de la requête : langues différentes 7. Fonctions de groupe SELECT MAX(nbpages) AS maxpages Signification de la requête : plus grand nombre de pages Applique une fonction sur toutes les valeurs d une colonne pour ne renvoyer qu 1 ligne.
8. Groupement Clause GROUP BY SELECT idediteur, MIN(prix) AS minprix GROUP BY idediteur ; Signification de la requête : plus petit prix par éditeur La clause GROUP BY regroupe les lignes en se basant sur la valeur des colonnes spécifiées et renvoie 1 seule ligne par groupe La clause GROUP BY est toujours utilisée pour appliquer une fonction de groupe sur chaque regroupement. 9. Sélection de groupements Clause HAVING SELECT idediteur, MIN(prix) AS minprix GROUP BY idediteur HAVING minprix < 10 ; Signification de la requête : plus petit prix par éditeur inférieur à 10 10. Jointures Principe : Si l'on utilise 2 tables dans une requête, il doit impérativement y avoir une jointure pour lier les tables. 2 tables 1 jointure n tables n-1 jointures Effet «algébrique» : livre editeur isbn titre idediteur idediteur nomediteur 2-84177-421-X Introduction à UML 2 1 1 O Reilly Requête correspondante : SELECT isbn, titre, livre.idediteur, editeur.idediteur, nomediteur INNER JOIN editeur ON livre.idediteur=editeur.idediteur ; condition de jointure : clé étrangère = clé primaire SELECT nomauteur FROM auteur INNER JOIN ecriture ON auteur.idauteur = ecriture.idauteur INNER JOIN livre ON ecriture.isbn = livre.isbn WHERE titre= Introduction à UML 2 ; Signification de la requête : nom des auteurs qui ont écrit «Introduction à UML2»
11. Sous-requêtes WHERE nbpages = ( SELECT MAX(nbpages) ) ; Signification de la requête : titre du livre qui a le plus grand nombre de pages On peut utiliser une requête dans une clause qui sera : exécutée en premier, puis sera remplacée dans la requête principale par : o la valeur renvoyée par cette sous-requête, o ou l'ensemble des valeurs renvoyées par cette sous-requête.