Retour à la liste des articles Articles
12 minutes de lecture

Syntaxe SQL

Dans l'article d'aujourd'hui, nous allons vous présenter la syntaxe SQL de base en nous concentrant sur l'instruction SELECT, INSERT INTO, UPDATEet DELETE et DELETE.

SQL est un langage de programmation conçu spécifiquement pour communiquer avec les bases de données. Il vous permet d'obtenir les données d'une base de données ou de modifier les données qu'elle contient.

Comme tout langage de programmation, SQL possède une syntaxe à laquelle vous devez adhérer. En d'autres termes, il existe des règles à suivre concernant ses commandes si vous voulez que votre code fonctionne.

La syntaxe SQL s'apprend mieux avec les instructions SQL de base. Vous pouvez ensuite vous appuyer sur elles et écrire du code plus complexe en suivant les mêmes règles. Si vous êtes novice en matière de SQL, nous vous recommandons notre SQL pour les débutants cours interactif. Il couvre l'instruction SELECT et d'autres instructions et fonctions SQL très courantes. Par exemple, vous apprendrez à filtrer les données à l'aide de la clause WHERE et des opérateurs logiques. Ce cours vous apprendra à combiner des données provenant de plusieurs tables à l'aide de JOINs, à agréger des données dans des groupes à l'aide de GROUP BY, et à combiner des résultats de requêtes à l'aide des opérateurs d'ensemble UNION, UNION ALL et INTERSECT.

Avec plus de 120 exercices interactifs, SQL pour les débutants est un bon point de départ pour apprendre à utiliser SQL. Vous pouvez également utiliser notre aide-mémoire gratuit SQL pour les débutants pendant que vous lisez cet article.

Nous avons déjà mentionné à plusieurs reprises les bases de données. Qu'ont-elles de si spécifique pour nécessiter un langage de programmation dédié ?

Comment les bases de données sont-elles organisées ?

Les bases de données sont constituées d'une ou plusieurs tables. L'objectif des tables est de stocker les données de manière organisée. Le mot clé ici est "organisé", ce qui signifie que les tables doivent avoir une certaine structure.

Chaque table a un nom qui permet de différencier les tables au sein de la base de données - de préférence un nom suffisamment descriptif pour savoir quelles données sont stockées dans cette table.

Chaque table possède des colonnes qui ont également un nom. Les colonnes définissent les données du tableau, tandis que les noms des colonnes les décrivent. Les tableaux comportent également des lignes, où sont stockées les données. Par exemple, le tableau ci-dessous est nommé employees. Il possède les colonnes suivantes :

  • id - Le numéro d'identification de l'employé.
  • first_name - Le prénom de l'employé.
  • last_name - Le nom de famille de l'employé.
  • salary - Le salaire de l'employé.
  • department - Le département de l'employé.

Les données du tableau sont présentées ci-dessous :

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Comme vous pouvez le constater, le tableau comporte dix lignes, chacune contenant les données d'un employé.

Instructions SQL courantes et leur syntaxe

Pour utiliser le langage SQL afin d'interroger des données, vous avez besoin d'instructions SQL. Il s'agit de commandes envoyées à la base de données, qui exécute une tâche en fonction de ce qui est écrit dans le code.

Les instructions SQL se terminent généralement par un point-virgule. Il ne s'agit pas d'une partie obligatoire de la syntaxe : la requête fonctionnera de la même manière sans point-virgule. Cependant, terminer l'instruction SQL par un point-virgule est une bonne pratique. Cela ajoute à la lisibilité du code, surtout lorsque vous écrivez beaucoup de code. Dans les exemples suivants, nous nous en tiendrons à cette pratique.

Passons maintenant en revue quelques-unes des instructions SQL les plus courantes.

Instruction SELECT

L'instruction SELECT est utilisée pour récupérer des données dans les bases de données. Vous pouvez sélectionner toutes les données ou seulement les informations contenues dans des colonnes spécifiques. Vous pouvez également filtrer les données, effectuer des calculs et des agrégations de données, et faire d'autres choses dans le cadre de cette instruction.

Examinons quelques-unes des possibilités offertes par SELECT et le fonctionnement de sa syntaxe.

Sélection de toutes les données de la table

La syntaxe permettant de sélectionner toutes les données de la table est la suivante :

SELECT *
FROM table;

Tout d'abord, vous écrivez SELECT. Ensuite, vous spécifiez que vous souhaitez sélectionner toutes les données. Lorsque nous disons "toutes les données", nous voulons dire "toutes les colonnes de la table" - un astérisque (*) dans l'instruction SELECT sert précisément à cela.

Ensuite, vous devez indiquer à la base de données à partir de quelle table vous voulez récupérer les données. C'est la deuxième ligne du code, qui commence par la clause FROM. Elle annonce que la table sera spécifiée immédiatement après ce mot, il vous suffit donc d'écrire le nom de la table.

Voici comment cela fonctionne :

SELECT *
FROM employees;

Ce code se traduit par "sélectionner toutes les colonnes du tableau". employees. Et c'est exactement ce qu'il fait !

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Sélectionner des colonnes spécifiques dans la table

La seule différence par rapport à la syntaxe ci-dessus est que vous énumérez des colonnes spécifiques au lieu d'écrire un astérisque :

SELECT column1,
	 column2
FROM table;

Lorsque vous listez les colonnes, il est important de les séparer par une virgule, sinon le code ne fonctionnera pas.

Il est également important de noter qu'il n'y a pas de virgule après la dernière colonne.

Bien qu'il ne soit pas nécessaire d'écrire chaque colonne du tableau dans une nouvelle ligne, c'est une bonne pratique. Nous vous conseillons de la suivre. Cela permet d'améliorer la lisibilité du code lorsque les déclarations deviennent plus complexes. En ayant chaque colonne dans une ligne séparée, il est plus facile de suivre les colonnes que vous avez sélectionnées et de voir si vous avez fait une erreur de syntaxe - par exemple, il est plus facile de remarquer que vous avez oublié une virgule entre les noms de colonnes.

Utilisons cette syntaxe sur notre tableau d'exemple :

SELECT first_name,
	 last_name
FROM employees;

Cette requête sélectionne les colonnes first_name et last_name dans le tableau. employees.

first_namelast_name
NancyChapman
SteveMason
KateWilliams
FrankHasbeen
HillaryAdailton
DanielJackson
SusanDeutsch
DereckVans
SamNelson
MariaLopez

Filtrer les données à l'aide de WHERE

L'instruction SELECT vous permet d'utiliser d'autres clauses, comme WHERE.

SELECT …
FROM table
WHERE …;

Il s'agit de la même instruction SELECT que précédemment. La seule différence est que vous écrivez la clause WHERE après avoir spécifié la table dans la clause FROM.

La clause WHERE vous permet de filtrer les données renvoyées en définissant une ou plusieurs conditions qui doivent être satisfaites.

Par exemple :

SELECT first_name,
	 last_name,
	 salary
FROM employees
WHERE salary > 3000;

Cette requête sélectionne le nom et le prénom des employés ainsi que leur salaire. Ce sont toutes des colonnes de la table employees. Cependant, je veux afficher uniquement les employés dont le salaire est supérieur à 3 000. Pour ce faire, j'écris d'abord la clause WHERE. Puis vient la condition : la colonne salary doit être supérieure à 3 000.

Voici les données que la requête renvoie :

first_namelast_namesalary
FrankHasbeen5,711.49
HillaryAdailton3,066.52
DanielJackson3,066.52
SusanDeutsch5,039.13
DereckVans4,434.27

Il y a cinq employés dont le salaire est supérieur à 3 000 et ils sont tous listés ci-dessus.

Ce n'est qu'une des nombreuses façons d'utiliser WHERE. Pour en savoir plus, consultez ce guide sur la rédaction de la clause WHERE.

Regroupement des lignes avec GROUP BY

Si vous utilisez la clause GROUP BY dans l'instruction SELECT, vous pouvez regrouper les lignes en groupes.

SELECT …
FROM table
GROUP BY …; 

La syntaxe montre une instruction standard SELECT. La clause FROM est suivie de la clause GROUP BY, dans laquelle vous énumérez les colonnes par lesquelles vous souhaitez regrouper les données. Les lignes sont regroupées en fonction des données contenues dans une ou plusieurs colonnes spécifiques ; les lignes ayant la même valeur de colonne se retrouvent dans le même groupe.

L'une des utilisations pratiques de GROUP BY est de compter le nombre d'employés dans chaque département. Pour ce faire, vous devez sélectionner la colonne department et utiliser la fonction d'agrégation COUNT() pour compter le nombre d'employés. Lorsque vous utilisez GROUP BY, vous pouvez regrouper le résultat par département. Et voilà le résultat : le nombre d'employés par département.

Pour des exemples sur le fonctionnement de GROUP BY, lisez GROUP BY dans SQL Expliqué ou 5 exemples de GROUP BY.

Filtrer les données à l'aide de HAVING

La clause HAVING est le plus souvent utilisée avec la clause GROUP BY. Elle a le même objectif que WHERE, sauf que WHERE filtre les données avant l'agrégation, alors que HAVING filtre les enregistrements agrégés. C'est pourquoi vous devez toujours écrire HAVING après GROUP BY:

SELECT …
FROM table
GROUP BY …
HAVING …;

Les conditions de HAVING sont écrites de la même manière que dans la clause WHERE. Puisqu'elle filtre les données après l'agrégation, les fonctions d'agrégation sont autorisées dans HAVING.

Comment utilisez-vous cela dans la vie réelle ? Un exemple courant est de calculer le salaire moyen par département, puis d'utiliser HAVING pour afficher uniquement les départements dont le salaire moyen est supérieur à un certain montant.

Pour des exemples détaillés du fonctionnement de cette clause, voir La clause HAVING SQL expliquée.

Trier les résultats d'une requête avec ORDER BY

L'une des clauses les plus couramment utilisées dans l'instruction SELECT est ORDER BY. Elle permet de trier les résultats de la requête par ordre croissant ou décroissant. Selon le type de données, il peut s'agir de trier les données de la valeur la plus élevée à la valeur la plus faible, de la date la plus ancienne ou la plus récente, ou encore par ordre alphabétique.

La clause ORDER BY vous permet de trier les résultats par une ou plusieurs colonnes.

Voici la syntaxe :

SELECT …
FROM table
…
ORDER BY …;

Une utilisation simple et pratique de ORDER BY consiste à trier les employés en fonction de leur salaire, de la valeur la plus élevée à la plus basse.

Vous trouverez des exemples détaillés de cette clause dans Comment trier des enregistrements avec la clause ORDER BY.

Instruction INSERT INTO

Cette commande est utilisée pour insérer des données dans la base de données. En voici la syntaxe :

INSERT INTO table (column1, column2, …)
VALUES (value1, value2, …);

Après INSERT INTO, vous devez écrire le nom de la table dans laquelle vous voulez insérer les données. Ensuite, entre parenthèses, vous écrivez les colonnes que vous voulez modifier. Comme dans SELECT, les colonnes sont séparées par une virgule.

Ensuite, il y a la commande VALUES. Entre parenthèses, vous écrivez les valeurs que vous voulez insérer dans le tableau. Les virgules séparent également ces valeurs. Jetez un coup d'œil à cet exemple :

INSERT INTO employees (id, first_name, last_name)
VALUES (11, 'Obi-Wan', 'Kenobi');

Cette requête insère des données dans la table employees. Elle modifie les colonnes id, first_name, et last_name. La nouvelle ligne insérée dans la table sera celle de l'employé Obi-Wan Kenobi, dont l'ID est 11.

Si vous sélectionnez toutes les colonnes de ce tableau (vous savez comment faire !), voici ce que vous obtiendrez :

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Comme je n'ai pas défini les valeurs de salaire et de département pour le nouvel employé, elles sont vides. La base de données utilise NULL pour marquer les valeurs vides.

La déclaration UPDATE

UPDATE est utilisée pour modifier les données de la table. Cette commande est généralement exécutée avec la clause WHERE. Si vous ne le faisiez pas, toutes les données de la table seraient modifiées.

La syntaxe ressemble à ceci :

UPDATE table
SET column1 = value1, column2 = value2, …
WHERE …;

Après avoir écrit UPDATE, vous écrivez le nom de la table qui est mise à jour. Vient ensuite la commande SET. Elle définit les colonnes à une valeur spécifique. En d'autres termes, vous indiquez quelle colonne doit être mise à jour et avec quelles valeurs. Vous utilisez un signe égal pour définir les valeurs, chaque colonne et sa nouvelle valeur étant séparées par une virgule. WHERE permet de limiter les mises à jour aux seules valeurs qui satisfont à une condition spécifique.

Voici un exemple de mise à jour des valeurs dans la table employees:

UPDATE employees
SET department = 'Sales'
WHERE id = 2;

Dans cette requête, je spécifie que je veux mettre à jour la table. employees. Ensuite, je veux avoir la valeur 'Sales' dans la colonne department pour l'employé dont l'ID est 2. Cet employé est passé de la comptabilité aux ventes, c'est pourquoi cette mise à jour est nécessaire.

Voici le tableau mis à jour :

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Le résultat montre que Steve Mason est maintenant dans le service des ventes.

Commande DELETE

Comme vous l'avez probablement deviné, cette commande est utilisée pour supprimer des données de la table.

Là encore, la clause WHERE joue un rôle important. Elle permet de supprimer uniquement certaines données, c'est-à-dire celles qui satisfont à la condition de la clause WHERE. Si vous omettez WHERE, l'instruction DELETE supprime toutes les données de la table.

Voici la syntaxe :

DELETE
FROM table
WHERE …;

Après DELETE vient la clause FROM. Comme pour l'instruction SELECT, elle contient le nom de la table dont vous voulez supprimer les données. Après cela, assurez-vous d'écrire la clause WHERE si vous ne voulez pas supprimer toutes les données de la table.

Voici un exemple pratique :

DELETE 
FROM employees
WHERE id = 11;

Cette requête supprime toutes les lignes dont l'identifiant est 11. Voici le résultat :

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

J'ai supprimé le nouvel employé Obi-Wan Kenobi de la table.

De la syntaxe SQL aux instructions SQL

Pour faire une déclaration en SQL - comme dans n'importe quel langage naturel - vous devez connaître sa syntaxe. Cela ouvre de nombreuses portes autrement fermées.

Comme vous l'avez vu, le fait de ne connaître que les bases vous permet de sélectionner des données dans la table, de les filtrer et de les regrouper. Il s'agit de l'instruction SELECT, et la connaissance de cette commande de base n'est qu'un début. Il existe d'autres instructions SQL courantes qui vous permettent d'insérer des données dans la table, de les modifier ou de les supprimer.

Toute langue s'apprend plus rapidement si vous l'utilisez tous les jours. Pour SQL, cela se traduit par l'écriture régulière de code. Il peut être difficile de trouver des occasions de "parler" SQL, mais ne vous inquiétez pas. Il y en a beaucoup dans le SQL pour les débutants cours. Faites-en l'essai. Avant même de vous en rendre compte, vous parlerez couramment le SQL !