CHAPITRE 6. LE LANGAGE SQL 65 Chapitre 6 Le langage SQL Sommaire 6.1 Requêtes s

CHAPITRE 6. LE LANGAGE SQL 65 Chapitre 6 Le langage SQL Sommaire 6.1 Requêtes simples SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.1.1 Sélections simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.1.2 La clause WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 6.1.3 Valeurs nulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.2 Requêtes sur plusieurs tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.2.1 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.2.2 Union, intersection et différence . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3 Requêtes imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.3.1 Conditions portant sur des relations . . . . . . . . . . . . . . . . . . . . . . . . 72 6.3.2 Sous-requêtes correllées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4 Agrégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4.1 Fonctions d’agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4.2 La clause GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.4.3 La clause HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5 Mises-à-jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5.1 Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5.2 Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5.3 Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Ce chapitre présente le langage SQL d’interrogation et de manipulation de données (insertion, mise- à-jour, destruction). La syntaxe est celle de la norme SQL2, implantée plus ou moins complètement dans la plupart des principaux SGBDR. Certaines fonctionnalités (triggers par exemple) sont en cours de nor- malisation dans SQL3, mais existent déjà dans quelques systèmes en raison de leur importance. Ils seront présentés brièvement. SQL est un langage déclaratif qui permet d’interroger une base de données sans se soucier de la re- présentation interne (physique) des données, de leur localisation, des chemins d’accès ou des algorithmes nécessaires. A ce titre il s’adresse à une large communauté d’utilisateurs potentiels (pas seulement des informaticiens) et constitue un des atouts les plus spectaculaires (et le plus connu) des SGBDR. On peut l’utiliser de manière interactive, mais également en association avec des interfaces graphiques, des outils de reporting ou, très généralement, des langages de programmation. Ce dernier aspect est très important en pratique car SQL ne permet pas de faire de la programmation au sens courant du terme et doit donc être associé avec un langage comme le C, le COBOL ou JAVA pour réaliser des traitements complexes accédant à une base de données. L’interface de SQL et du langage C sera présentée dans le chapitre 8. Philippe Rigaux (rigaux@lri.fr), Cours de bases de données, 2003 6.1. REQUÊTES SIMPLES SQL 66 6.1 Requêtes simples SQL Dans tout ce chapitre on va prendre l’exemple de la (petite) base de données présentée dans le chapitre sur l’algèbre. 6.1.1 Sélections simples Commençons par les requêtes les plus simples : la figure 5.1 montre une instance de la base pour les relations Station et Activite. Première requête: on souhaite extraire de la base le nom de toutes les stations se trouvant aux Antilles. SELECT nomStation FROM Station WHERE region = ’Antilles’ Ce premier exemple montre la structure de base d’une requête SQL, avec les trois clauses SELECT, FROM et WHERE. – FROM indique la (ou les) tables dans lesquelles on trouve les attributs utiles à la requête. Un attribut peut être ’utile’ de deux manières (non exclusives): (1) on souhaite afficher son contenu, (2) on souhaite qu’il ait une valeur particulière (une constante ou la valeur d’un autre attribut). – SELECT indique la liste des attributs constituant le résultat. – WHERE indique les conditions que doivent satisfaire les n-uplets de la base pour faire partie du résultat. Dans l’exemple précédent, l’interprétation est simple : on parcourt les n-uplets de la relation Station. Pour chaque n-uplet, si l’attribut region a pour valeur ’Antilles’, on place l’attribut nomStation dans le résultat 1. On obtient donc le résultat : nomStation Venusa Santalba Le résultat d’un ordre SQL est toujours une relation (une table) dont les attributs sont ceux spécifiés dans la clause SELECT. On peut donc considérer en première approche ce résultat comme un ’découpage’, horizontal et vertical, de la table indiquée dans le FROM, similaire à une utilisation combinée de la sélection et de la projection en algèbre relationnelle. En fait on dispose d’un peu plus de liberté que cela. On peut: – Renommer les attributs – Appliquer des fonctions aux valeurs de chaque tuple. – Introduire des constantes. Les fonctions applicables aux valeurs des attributs sont par exemple les opérations arithmétiques ( , *, ...) pour les attributs numériques ou des manipulations de chaîne de caractères (concaténation, sous- chaînes, mise en majuscule, ...). Il n’existe pas de norme mais la requête suivante devrait fonctionner sur tous les systèmes : on convertit le prix des activités en euros et on affiche le cours de l’euro avec chaque tuple. SELECT libelle, prix / 6.56, ’Cours de l’euro = ’, 6.56 FROM Activite WHERE nomStation = ’Santalba’ 1. Attention, ce n’est pas forcément ainsi que la requête est exécutée par le système. CHAPITRE 6. LE LANGAGE SQL 67 Ce qui donne le résultat : libelle prix / 6.56 ’Cours de l’euro =’ ’6.56’ Kayac 7.62 ’Cours de l’euro =’ 6.56 Renommage Les noms des attributs sont par défaut ceux indiqués dans la clause SELECT, même quand il y a des expressions complexes. Pour renommer les attributs, on utilise le mot-clé AS. SELECT libelle, prix / 6.56 AS prixEnEuros, ’Cours de l’euro = ’, 6.56 AS cours FROM Activite WHERE nomStation = ’Santalba’ On obtient alors : libelle prixEnEuros ’Cours de l’euro =’ cours Kayac 7.69 ’Cours de l’euro =’ 6.56 Remarque : Sur certains systèmes, le mot-clé AS est optionnel. Doublons L’introduction de fonctions permet d’aller au-delà de ce qui est possible en algèbre relationnelle. Il existe une autre différence, plus subtile : SQL permet l’existence de doublons dans uploads/Geographie/ chapitre6-le-langage-sqlserie-4.pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager