Retour à la liste des articles Articles
7 minutes de lecture

Énumération et explication de tous les éléments de base d'une requête SQL

"Quels sont les éléments de base d'une requête SQL ?" est une question populaire dans les entretiens d'embauche en SQL. Dans cet article, nous passons en revue la syntaxe de base d'une requête SQL.

Une requête SQL, qui demande des informations à une base de données relationnelle, se compose de plusieurs éléments. Ceux-ci vous permettent de sélectionner des colonnes spécifiques dans des tables spécifiques et de filtrer et trier ces informations si nécessaire. Dans cet article, je vais passer brièvement en revue ces éléments en expliquant ce que fait chaque élément et comment l'utiliser.

Éléments de base d'une requête SQL

SELECT

L'instruction SELECT est la première chose que vous rencontrerez lorsque vous commencerez à apprendre le langage SQL. Avec l'instruction SELECT, vous choisissez les colonnes à afficher dans la sortie.

Par exemple, imaginons que nous sommes des analystes de données au Louvre. Nous disposons de plusieurs tables dans notre base de données, notamment celles qui concernent artworks et artists.

artworks
idtitleartist_idyeartype
111The Mona Lisa121506painting
112Jean-Baptiste Poquelin (Moliere)141787sculpture
113The Wedding Feast at Cana111563painting
114The Lacemaker131670painting
115A River141759sculpture

artists
idnameyear_birthyear_death
11Paolo Veronese15281588
12Leonardo da Vinci14521519
13Johannes Vermeer16321675
14Jean-Jacques Caffieri17251792

Notre première tâche consiste à obtenir des informations de base sur les œuvres d'art que nous exposons, à savoir le site title, l'année de création et le type d'œuvre. Voici la requête permettant de demander ces informations :

SELECT title, year, type
FROM artworks;

Dans l'instruction SELECT, nous listons simplement les colonnes que nous voulons voir. Voici le résultat :

titleyeartype
The Mona Lisa1506painting
Jean-Baptiste Poquelin (Moliere)1787sculpture
The Wedding Feast at Cana1563painting
The Lacemaker1670painting
A River1759sculpture

Vous trouverez d'autres exemples de SELECT dans cet article sur la rédaction d'une instruction SELECT. Consultez également notre cours SQL pour les débutants pour commencer à apprendre SQL de manière interactive.

FROM

Comme vous l'avez vu dans notre premier exemple, lorsque vous choisissez les colonnes à afficher, vous devez également spécifier la table dans laquelle ces données sont stockées. Ceci est fait avec le mot-clé FROM.

Dans l'exemple ci-dessus, nous avons demandé des informations sur diverses œuvres d'art, qui sont (comme prévu) stockées dans la table artworks table.

Maintenant, obtenons quelques informations de base sur les artistes présentés dans notre musée. Pour ce faire, nous allons demander le nom des artistes, leur année de naissance et leur année de décès dans la table artists table :

SELECT name, year_birth, year_death
FROM artists;

Voici le résultat de cette requête SQL :

nameyear_birthyear_death
Paolo Veronese15281588
Leonardo da Vinci14521519
Johannes Vermeer16321675
Jean-Jacques Caffieri17251792

JOIN

Dans de nombreux cas, vous devrez joindre les données de plusieurs tables pour obtenir le résultat souhaité. L'instruction JOIN vous permet d'obtenir des informations de deux tables ou plus dans une seule requête SQL.

Par exemple, disons que vous voulez voir les noms des artistes avec leurs œuvres d'art. Ces informations ne sont pas disponibles dans une seule table : vous avez le nom de l'œuvre d'art dans les tables artworks tandis que le nom de l'artiste est stocké dans la table artists table. Cependant, vous pouvez facilement joindre ces deux informations en utilisant le numéro d'identification de l'artiste , qui est stocké dans les deux tables :

SELECT artworks.title, artists.name
FROM artworks
JOIN artists
ON artworks.artist_id = artists.id;

Nous spécifions une table dans l'instruction FROM et une autre table dans l'instruction JOIN. Nous utilisons également le mot-clé ON pour indiquer à la base de données les valeurs de colonne à faire correspondre pour joindre les tables.

Voici le résultat :

titlename
The Mona LisaLeonardo da Vinci
Jean-Baptiste Poquelin (Moliere)Jean-Jacques Caffieri
The Wedding Feast at CanaPaolo Veronese
The LacemakerJohannes Vermeer
A RiverJean-Jacques Caffieri

Pour comprendre les différents types de jointures disponibles en SQL, consultez ce guide d'introduction. N'oubliez pas non plus de consulter nos 10 meilleures questions d'entretien sur les jointures SQL. Elles sont idéales pour s'entraîner (même si vous ne vous préparez pas à un entretien d'embauche).

WHERE

La clause WHERE est utilisée pour filtrer les résultats d'une requête. Par exemple, supposons que votre prochaine mission consiste à répertorier les titres des peintures disponibles dans le musée et leur année de création. Vous ne voulez pas d'informations sur les sculptures et autres types d'œuvres d'art dans le jeu de résultats.

Voici la requête SQL à utiliser :

SELECT title, year
FROM artworks
WHERE type = ‘painting’;

Avec l'instruction WHERE, vous spécifiez simplement que le type d'œuvre d'art doit être "peinture". Vous obtenez ainsi ce résultat :

titleyear
The Mona Lisa1506
The Wedding Feast at Cana1563
The Lacemaker1670

Pour plus de détails sur la clause WHERE, consultez cet article.

ORDER BY

Vous souhaitez souvent que les résultats de la requête soient affichés dans un ordre spécifique. En SQL, vous pouvez trier le jeu de résultats avec la clause ORDER BY.

Par exemple, classons le résultat de la dernière requête SQL par année de création, en commençant par les œuvres les plus récentes. Pour ce faire, il suffit de spécifier la colonne année dans la clause ORDER BY et d'ajouter le mot-clé DESC pour mettre les résultats dans l'ordre décroissant :

SELECT title, year
FROM artworks
WHERE type = ‘painting’
ORDER BY year DESC;
titleyear
The Lacemaker1670
The Wedding Feast at Cana1563
The Mona Lisa1506

Pour en savoir plus sur le classement des lignes par une ou plusieurs colonnes, consultez cet article d'introduction. Pour des cas d'utilisation plus avancés de ORDER BY, consultez ce guide approfondi sur l'instruction ORDER BY.

GROUPE PAR

Par défaut, tous les résultats que nous obtenons sont orientés vers les enregistrements. Cependant, dans certains cas, nous pouvons vouloir calculer des mesures pour des groupes d'enregistrements (par exemple, le nombre de peintures de chaque artiste, le chef-d'œuvre le plus ancien pour chaque type d'œuvre, etc.) C'est ici que la clause GROUP BY entre en jeu.

Avec GROUP BY, vous pouvez créer des groupes d'enregistrements (rangées) et calculer des mesures sur chaque groupe. Par exemple, voyons l'année de création du chef-d'œuvre le plus ancien de chaque type d'œuvre d'art :

SELECT type, MIN (year) AS oldest_work_from
FROM artworks
GROUP BY type;

Ici, nous calculons l'année la plus ancienne (minimale) pour chaque type d'œuvre d'art. Nous obtenons le résultat suivant :

typeoldest_work_from
painting1506
sculpture1759

Pour en savoir plus sur la syntaxe de GROUP BY, consultez cet article. Vous trouverez également d'autres exemples avec GROUP BY ici.

HAVING

Comme la clause WHERE, HAVING filtre le résultat d'une requête. Toutefois, WHERE filtre au niveau de l'enregistrement, tandis que HAVING filtre au niveau du groupe. Pour en savoir plus sur la différence entre HAVING et WHERE, cliquez ici.

Supposons que nous voulions obtenir les types d'œuvres d'art dont l'œuvre la plus ancienne est antérieure à 1600. Comme il s'agit d'une condition pour une valeur agrégée, nous la plaçons dans la clause HAVING :

SELECT type, MIN (year) AS oldest_work_from
FROM artworks
GROUP BY type
HAVING MIN (year) < 1600;

Dans notre cas, seuls les tableaux satisfont à cette condition :

typeoldest_work_from
painting1506

Obtenez plus de détails sur quand et comment utiliser la clause HAVING dans ce guide.

Syntaxe des requêtes SQL : Résumons

Comme nous avons passé en revue les éléments de base d'une requête SQL, vous avez probablement pu constater que l'endroit et la manière d'utiliser ces éléments sont généralement simples. Cependant, il existe de nombreux détails qui n'ont pas été abordés dans cet aperçu. Pour vous aider à réviser vos connaissances de la syntaxe SQL, nous avons préparé une feuille de cheat de deux pages SQL pour les débutants. N'hésitez pas à la télécharger, à l'imprimer et à la coller sur votre bureau.

Essayons maintenant d'utiliser tous les éléments de base dans une requête SQL. Obtenons les noms des artistes ainsi que l'année de leur œuvre la plus ancienne que nous avons au musée. Nous voulons également (1) exclure la Joconde, car elle est trop célèbre ; (2) inclure uniquement les artistes dont l'œuvre la plus ancienne a été créée avant 1700, et (3) ordonner le résultat par année de l'œuvre la plus ancienne, en commençant par la plus ancienne.

Voici la requête à utiliser :

query

Le résultat de cette requête est :

nameoldest_work_from
Paolo Veronese1563
Johannes Vermeer1670

Avez-vous été en mesure de suivre la logique de cette requête SQL ? Si vous ne vous sentez pas à l'aise avec l'utilisation de différents éléments de requête, n'hésitez pas à consulter notre SQL pour les débutants cours. En 129 exercices interactifs, il couvre les applications fondamentales de SQL, notamment la création de rapports de base, le travail avec plusieurs tables, la création de rapports avec des fonctions d'agrégation et l'écriture de sous-requêtes et d'instructions complexes.

Vous souhaitez encore plus de pratique ? LearnSQL.fr a développé une Exercices Pratiques de SQL avec 88 exercices interactifs pour tester vos connaissances de base de SQL.

Merci de votre lecture et bon apprentissage !