Retour à la liste des articles Articles
6 minutes de lecture

Qu'est-ce que l'instruction INSERT en SQL ?

L'instruction INSERT en SQL est utilisée pour ajouter de nouvelles données à votre base de données. Cet article vous expliquera comment l'utiliser et vous montrera des exemples pratiques tout au long du processus.

Lorsque vous apprenez le langage SQL, vous vous concentrez sur l'extraction de données d'une base de données, en travaillant principalement avec SELECT. En SQL, il existe également des instructions qui vous permettent de modifier les données d'une base de données.

La première est l'instruction INSERT: elle ajoute des données à une table. Les données sont ajoutées sous la forme d'une nouvelle ligne dans la table.

L'instruction SQL INSERT insère une ou plusieurs lignes de données dans une table. Vous pouvez également voir INSERT écrit comme INSERT INTO, mais les deux se comportent de la même manière. L'inclusion de INTO est facultative dans la plupart des variantes de SQL.

L'instruction INSERT est considérée comme une commande de manipulation de données SQL. Les autres commandes sont UPDATE et DELETE, que vous pouvez découvrir dans ce cours accessible Comment INSÉRER, METTRE À JOUR ou SUPPRIMER des données en SQL à partir de LearnSQL.fr.

Syntaxe SQL INSERT

La syntaxe de SQL INSERT se présente sous deux formes :

  1. Utilisation de INSERT avec les noms de colonnes.
  2. Utilisation de INSERT sans noms de colonnes.

Examinons les différences subtiles entre les deux et les règles qui s'appliquent à chaque syntaxe.

Syntaxe SQL INSERT avec noms de colonnes

La syntaxe pour utiliser INSERT avec des noms de colonnes spécifiés est la suivante :

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Lorsque vous spécifiez des colonnes de cette manière, les colonnes et les valeurs doivent correspondre dans l'ordre, le type de données et le nombre. Si vous insérez une valeur de type chaîne, elle doit être placée entre guillemets. Les valeurs numériques n'ont pas besoin d'être entre guillemets.

Par exemple, imaginons que vous ayez une table avec les colonnes suivantes :

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Nous devons écrire notre requête SQL pour prendre en compte le type de données de chaque colonne :

INSERT INTO person (name, age, date_of_birth)
VALUES ('John Doe', 25, '1996-02-18');

Lorsque vous incluez des noms de colonnes comme celui-ci, vous pouvez peut-être omettre certaines valeurs en fonction de la définition de la table. Par exemple, si les colonnes de la table autorisent les valeurs NULL, ou si elles ont été configurées avec des valeurs par défaut, vous pouvez exclure complètement ces colonnes de votre déclaration INSERT.

Imaginons que la table suivante ait été créée, avec une valeur DEFAULT fournie pour la colonne date_of_birth:

CREATE TABLE person (name varchar(255), age int, date_of_birth date DEFAULT ('1900-01-01'));

Maintenant, si vous écrivez la requête suivante, en excluant entièrement la colonne date_of_birth de notre déclaration INSERT INTO, elle sera remplie avec la valeur DEFAULT au lieu de NULL.

INSERT INTO person (name, age)
VALUES ('John Doe', 25);

Visualisez le résultat de INSERT en le sélectionnant dans votre table :

SELECT * from person
nameagedate_of_birth
John Doe251900-01-01

Il est temps pour nous de voir comment la syntaxe change lorsque vous utilisez INSERT sans spécifier les noms des colonnes.

Syntaxe SQL INSERT sans nom de colonne

La syntaxe pour utiliser INSERT sans les noms de colonne est la suivante :

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Si vous choisissez de ne pas énumérer les noms des colonnes, vous devez insérer des valeurs dans chaque colonne de votre table, en veillant à respecter l'ordre correct ce faisant. Vous pouvez trouver l'ordre correct des colonnes en consultant le schéma d'information de votre table.

Appliquons cette syntaxe à un exemple pratique. Créons une table simple comme nous l'avons fait précédemment :

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Cela crée notre table, mais comment y ajouter plusieurs lignes de données sans spécifier les noms des colonnes ? Vous pouvez simplement écrire cette requête :

INSERT INTO person
VALUES ('John Doe', 25, '1996-02-18'),
VALUES ('Ben Watson', 31, '1990-04-16'),
VALUES ('Lucy Smith', 27, '1993-06-29');

Notez comment les valeurs sont listées dans l'ordre de la définition de la table : d'abord, le nom de la personne, puis l'âge, et enfin la date de naissance. Vous ne pouvez omettre aucune colonne avec cette syntaxe ; vous devez fournir une valeur pour chaque colonne. Notez que les virgules sont utilisées pour séparer les valeurs au sein de chaque ligne ainsi que pour séparer les valeurs d'une ligne de celles d'une autre, avec un point-virgule pour terminer la déclaration. C'est ainsi que nous pouvons ajouter plusieurs lignes sans avoir besoin d'utiliser les noms de colonnes eux-mêmes.

Comment INSÉRER DANS une table existante ?

Pour ces exemples, imaginons que nous ayons une table existante appelée people. Elle contient le prénom, le nom et l'âge de la personne.

people

first_namelast_nameage
JohnSmith23
MaryConway54
PaulJohnson33

Alors, comment ajouter une nouvelle personne à cette table ? Regardez la requête SQL ci-dessous :

INSERT INTO people (first_name, last_name, age)
VALUES ('Sandra', 'Cruz', 28);

Notez que nous respectons les règles que nous avons mentionnées précédemment. L'ordre, le type de données et le nombre de colonnes et de valeurs correspondent. Les valeurs des chaînes sont également placées entre guillemets pour first_name et last_name. Le fait de ne pas inclure ces guillemets entraînerait une erreur.

Nous avons réussi à ajouter une personne à notre tableau. Mais imaginez que nous devions ajouter plusieurs personnes. L'écriture de plusieurs déclarations INSERT prendrait beaucoup de temps. Heureusement, il existe une meilleure solution.

Examinons un exemple d'ajout de plusieurs lignes de données à notre tableau, où nous ne spécifions pas les noms des colonnes.

INSERT INTO people
VALUES
	('Jacob', 'Ward', 40),
	('Stacey', 'Tuite', 65),
('Thomas', 'Rice', 43);

Vous pouvez voir combien de temps cette syntaxe peut vous faire gagner si vous prévoyez d'ajouter un grand nombre de lignes à votre tableau en une seule fois.

Pour plus d'exemples et une explication approfondie, vous pouvez envisager de suivre un cours sur le sujet. Consultez cet article de blog qui explique les avantages de s'inscrire à un cours spécialisé dans le sujet des commandes INSERT, UPDATE et DELETE. Lorsque vous reproduisez ces exemples, il est important de comprendre comment les autorisations peuvent affecter l'utilisation de l'instruction INSERT.

Autorisations SQL INSERT

Vous devez disposer de l'autorisation INSERT pour insérer des données dans une base de données. Il est possible que vous n'ayez que le droit de sélectionner les données, surtout si vous travaillez avec une base de données dont vous n'êtes pas l'administrateur. Si tel est le cas, vous ne serez pas autorisé à insérer des données dans une table et devrez peut-être demander ces privilèges à votre administrateur de base de données.

Ajouter de nouvelles données à vos tables avec SQL INSERT

Ceci conclut notre article sur SQL INSERT. Nous avons abordé les différences subtiles entre l'ajout d'une ou plusieurs lignes à votre table, ce qui vous permet d'ajouter des données de la manière la plus efficace. Nous avons également abordé les autorisations dont vous pouvez avoir besoin si vous n'êtes pas l'administrateur de votre base de données. N'hésitez pas à ajouter cette page à vos favoris afin de pouvoir vous y référer facilement. Nous avons mentionné que la commande INSERT est l'un des moyens de modifier les données de vos tables. Les autres commandes qui modifient les données sont UPDATE et DELETE. Pour en savoir plus, consultez cet article sur INSERT, UPDATE et DELETE.