Programme Officiel

Contenus

Capacités attendues

Commentaires

Langage SQL : requêtes d’interrogation et de mise à jour d’une base de données.

Identifier les composants d’une requête.

Construire des requêtes d’interrogation à l’aide des clauses du langage SQL : SELECT, FROM, WHERE, JOIN.

Construire des requêtes d’insertion et de mise à jour à l’aide de : UPDATE, INSERT, DELETE.

On peut utiliser DISTINCT, ORDER BY ou les fonctions d’agrégation sans utiliser les clauses GROUP BY et HAVING.

Lien vers le programme complet
.tables

Qui renvoie les deux tables présentes: peintres peintures.

 

Pour plus de clarté, on peut également ajouter le nom des colonnes lors des renvois avec .headers ON.

Construire des requêtes d'interrogation

Pour afficher toutes les enregistrements d'une table on utilise:

SELECT * FROM tablename;

On va commencer par afficher toutes les entrées de la table peintres: SELECT * FROM peintres; puis peintures: SELECT * FROM peintres;.

Choisir les colonnes à afficher avec SELECT

SELECT col1, col2 FROM tablename;

Il peut être nécessaire de connaitre le nom des colonnes avec: PRAGMA table_info(peintres);

On va récupérer le nom et le sexe du peintre:

SELECT painterLabel, painterGenderLabel FROM peintres;

Restreindre les lignes avec WHERE

On sélectionne les tableaux peints en 1503.

SELECT * FROM peintures WHERE year="1503";

Jointure de deux tables avec JOIN

Dans cette base de données, les informations sur les peintres et sur les peintures ont été sépérées, ce qui est bien pour éviter la redondance et les risques d'anomalies, mais qui rend le résultat sur les tableaux peu parlant.

Par exemple, la requête: SELECT * FROM peintures WHERE paintingLabel="La Joconde";

renvoie:

12418|La Joconde|1503|762|Haute Renaissance|http://commons.wikimedia.org/wiki/Special:FilePath/Mona%20Lisa%2C%20by%20Leonardo%20da%20Vinci%2C%20from%20C2RMF%20retouched.jpg

Ainsi le peintre est identifié par son id 762, c'est bien pour la base de données mais pas pour l'utilisateur qui veut connaitre le nom du peintre.

Il va falloir aller chercher cette information dans la deuxième table: peintres et faire une jointure pour afficher toutes les informations souhaitées.

SELECT peintures.id, paintingLabel, year, painterLabel  FROM peintures JOIN peintres ON peintures.painterId = peintres.id WHERE paintingLabel="La Joconde";

Qui renvoie: 12418|La Joconde|1503|Léonard de Vinci

Comme vous le voyez il peut être nécessaire de préciser d'où vient la colonne sélectionnée avec une notation pointée comme: peintures.id de la forme nom_de_la_table.nom_de_la_colonne

DISTINCT et ORDER BY

Voici deux instructions uplémentaires qui peuvent être utiles:

  • DISTINCT: Ne pas renvoyer les doublons.
SELECT DISTINCT ma_colonne
FROM nom_du_tableau

Cette requête sélectionne le champ ma_colonne de la table nom_du_tableau en évitant de retourner des doublons.

  • ORDER BY: Ordre dans lequel sont renvoyés les données sélectionnées.
SELECT colonne1, colonne2
FROM table
ORDER BY colonne1

Cette requête sélectionne les champs colonne1 et colonne2 de la table table et classe la sélection par ordre croissant sur la colonne1.

Construire des requêtes d'insertion et de mise à jour

Ajouter des entrées avec INSERT

Grâce au SQL, nous pouvons aussi ajouter des informations dans une table avec la commande INSERT INTO. Pour ce faire, il faut indiquer la table dans laquelle on souhaite intégrer une ligne ainsi que la liste des champs pour lesquels on spécifie une valeur, et enfin la liste des valeurs correspondantes.

INSERT INTO peintures (id, paintingLabel, year, painterId, movementLabel) VALUES (
124181, "La Joconde 2 Le retour", 1504, 762, "Haute Renaissance");

Ou plus simplement:

INSERT INTO peintures VALUES  (
124181, "La Joconde 2 Le retour", 1504, 762, "Haute Renaissance", NULL);

Mettre à jour des informations avec UPDATE

On peut modifier certains champs d'enregistrements existants grâce au mot-clé UPDATE : cette instruction permet de mettre à jour plusieurs champs de plusieurs enregistrements d'une table, à partir des expressions qui lui sont fournies.

UPDATE peintures SET year=1505  WHERE id=124181;

On peut vérifier la mise à jour avec: SELECT * FROM peintures WHERE id=124181;

Supprimer des entrées avec DELETE

Il se peut que l'on soit amené à supprimer un ou plusieurs enregistrements d'une table, il existe pour cela l'instruction DELETE FROM. On doit alors fournir au minimum le nom de la table sur laquelle va s'effectuer la suppression.

DELETE FROM peintures WHERE id=124181;

On peut vérifier la suppression avec: SELECT * FROM peintures WHERE id=124181;

::: ref

::: -->