Informatique CSI SGP
OutilsPremière NSITerminale NSI

Requêtes SQL

Terminale NSI, Bases de données
Dans ce TP, on apprends à se servir des commandes SQL permettant de réaliser des requêtes permettant de d'intéragir avec une base de données. Les notions différentes syantaxes sont données sous forme de lien vers le site sql.sh à consulter sans modération.

Import des données et Relations

Télécharger le fichier suivant et l'exécuter dans votre SGBD (vous pouvez vous aider du premier TP pour vous rappeler comment on fait). Une fois l'import terminé, lire les premières lignes du fichier et en déduire les relations définies dans cette base (bien identifier les clés primaires et étrangères).

SELECT

L'instruction SELECT permet d'afficher toute ou une partie des données présentes dans une ou plusieures relations d'une base de données. Elle est utilisée conjointement avec l'instruction FROM et parfois avec l'instruction WHERE. Plus de détails ici puis Tester des requêtes SELECT dans la base de données importée :
  • afficher le titre de tous les livres de la médiathèque ;
  • afficher l'isbn des livres empruntés de la bibliothèques ;
  • afficher le titre et l'année de parution de tous les livres parus entre 1970 et 1980 ;
  • afficher toutes les données des livres parus après 1990.

Fonctions d'agrégation

Les instructions COUNT, SUM, AVG, MIN, MAX permettent via SELECT de calculer le nombre, la somme, la moyenne le minimum, le maximum d'un certain sous ensemble de données. Plus de détails ici (ignorer la partie GROUP BY).
  • afficher le nombre total de livres ;
  • afficher le nombre total de livres empruntés ;
  • afficher le nombre total de livres parus après 1990 ;
  • afficher la moyenne des dates de parution des livres ;
  • afficher l'année de parution la plus ancienne ;

Doublon et tri

Dans une requête SELECT, il est possible de ne pas afficher les doublons d'un certain attribut grâce à l'instruction DISTINCT. Il est aussi possible de déterminer un certain ordre d'affichage via l'instruction ORDER BY.
  • afficher toutes les années de parution sans doublon;
  • afficher l'isbn de tous les livres empruntés triés par ISBN ;
  • afficher l'isbn et la date d'emprunt de tous les livres empruntés, triés par date d'emprunt ;

Jointures

La jointure permet de créer (le temps d'une requête) une table contenant des données provenant de plusieurs autres tables lorsque celles-ci disposent d'un attribut commun. Plus de détail ici (ne pas faire attention au différents types de jointure, on n'utilisera que l'instruction JOIN). En fusionnant deux tables selon un certain attribut, on peut afficher des données de manière plus complètes. Par exemple, fusioner les tables emprunt et livre permet d'afficher le titre des livres empruntés et non seulement l'ISBN.
  • afficher toutes les données de la jointure des tables livres et emprunt (attribut commun : isbn);
  • afficher le nom de chaque personne ayant un emprunt en cours (dans quelles tables se trouvent ces info ?);

Requêtes imbiquées et alias

Si à première vue l'instruction SELECT sert à afficher des données, son fonctionnement permet de constriure des commandes dites imbriquées. En effet, le résultat d'une requête SELECT est une table, il est donc possible de remplacer dans les syntaxes précédentes n'importe quelle table par une telle requête.
  • afficher les titres des livres les plus anciens (date d'édition minimum) ;
  • afficher les titres des livres empruntés et édités avant 2000 ;
  • afficher les titres des livres parus la même année que 'Moby Dick'.
Il est parfois utile dans une requête imbriquée de donner un nom (alias) au résultat d'un SELECT. Pour cela, on utilise l'instruction AS.
  • afficher, en utilisant des requêtes imbriquées et un alias, les données des livres parus entre 1990 et 2000.

Modification des données

Suppression de lignes

On peut supprimer une ou plusieurs ligne via l'instruction DELETE.
  • supprimer de la table emprunt tous les livres d'un utilisateur donné (chercher un code barre valide) ;
  • supprimer de la table usager tous les utilisateurs dont le code postal est '75001' ou '75002'.

Mise à jour

La commande UPDATE permet de modifier une ou plusieurs lignes ou colonne d'une table.
  • modifier l'email de l'utilisateur de code barre '934701281931582' en 'spetit@hmail.com' ;
  • ajouter 30 jours à la date de rendu de tous les livres empruntés (remarque : on a le droit comme en python d'écrire x = x+1 dans un SET).