Essentiels de SQL Server : modification des données de table avec SQL Insert, SQL Update, SQL Delete et Truncate

Les tables sont l’un des composants essentiels de chaque système de base de données relationnelle et SQL Server ne fait pas exception. Les tables stockent les données que le moteur de base de données relationnelle utilise pour les requêtes, les rapports et autres opérations. Dans cet article, je vais vous montrer comment modifier les données d’une table SQL Server en utilisant les commandes T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE et TRUNCATE.

Dans mon article précédent, SQL Server Essentiel : Création de bases de données et de tables, j’ai montré comment vous pouvez créer des bases de données et des tables de base SQL Server. Dans cet article, nous verrons comment peupler ces tables en ajoutant, mettant à jour et supprimant des lignes.

Publicité

I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:

CREATE TABLE dbo.myLogins
 (
     id INT NOT NULL PRIMARY KEY,
    name VARCHAR (20),
    login_date DATETIME
 );

Dans cet article, nous verrons comment ajouter des données à une table en utilisant l’instruction INSERT, modifier des données dans une table en utilisant l’instruction UPDATE, et supprimer des données en utilisant l’instruction DELETE. Les données dans une table peuvent être supprimées de plusieurs manières, nous aborderons donc également la différence entre l’utilisation de l’instruction DELETE et de l’instruction TRUNCATE.

Ajout de lignes en utilisant T-SQL INSERT

Vous pouvez ajouter des données à une table SQL Server de plusieurs manières :

Cela dit, le moyen le plus courant d’ajouter des données à une table SQL Server consiste à utiliser l’instruction SQL INSERT. L’ instruction T-SQL INSERT ajoute une ou plusieurs lignes à une table SQL Server.

Publicité

L’exemple suivant montre comment ajouter une ligne à l’exemple de table présenté précédemment :

INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')

Voici, l’instruction INSERT INTO identifie la table qui contiendra les lignes insérées. Ensuite, entre les parenthèses, vous pouvez voir une liste des colonnes qui seront utilisées. Cette liste utilise toutes les colonnes de la table, mais vous n’êtes pas obligé de le faire.

Enfin, la clause VALUES fournit les valeurs réelles qui seront insérées dans la table. En tant que raccourci, vous pouvez omettre la liste des colonnes dans une instruction INSERT. Par exemple, l’instruction INSERT suivante effectue exactement la même fonction que l’exemple précédent:

INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')
As a shortcut, you can omit the column list in an INSERT statement (Image credit: Petri/Michael Otey)

Sauf si la colonne est définie en utilisant les mots-clés NOT NULL, vous pouvez également spécifier explicitement NULL dans la liste des valeurs d’une instruction INSERT. Alternativement, lorsque vous ne souhaitez pas spécifier de valeur pour une colonne, vous pouvez omettre cette colonne de vos listes de colonnes et de valeurs, ce qui la fera contenir une valeur NULL.

Publicité

Insertion de lignes de table à partir des résultats d’une requête

En plus d’utiliser une instruction INSERT T-SQL standard avec une clause VALUES, vous pouvez également ajouter des lignes à une table en résultat d’une requête SQL. La requête peut être simple ou complexe, et les résultats peuvent être insérés dans la table cible.

Par exemple, pour copier des lignes de la table myLogins2 dans la table myLogins, vous pouvez utiliser une requête comme celle que vous pouvez voir ci-dessous:

INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.

Cet exemple utilise les résultats de la sous-requête de la table myLogins2 pour insérer des lignes dans la table myLogins. L’instruction INSERT insère des données dans les trois colonnes de la table. La sous-requête utilise une instruction SELECT pour sélectionner les mêmes trois colonnes d’une deuxième table nommée myLogins2.

Cependant, dans cet exemple, seules les lignes avec une valeur d’identifiant supérieure à 50 seront renvoyées et ajoutées à la table myLogins. Dans cet exemple simple, les noms de colonnes sont les mêmes, mais ce n’est pas une exigence. Pour que cela fonctionne, vous avez besoin d’une ou plusieurs lignes dans la table myLogins2 ayant une valeur d’identifiant supérieure à 50 qui ne sont pas présentes dans la table myLogins.

Mise à jour des lignes à l’aide de T-SQL UPDATE

Tout comme l’ajout de lignes à une table, il existe plusieurs façons de modifier les lignes dans une table. Le concepteur de requêtes de SSMS vous permet de mettre à jour les lignes de manière interactive, mais vous pouvez également utiliser PowerShell ou Integration Services.

Cependant, la façon la plus courante de modifier les lignes existantes dans une table de base de données est d’utiliser l’instruction SQL UPDATE. L’instruction T-SQL UPDATE modifie les valeurs dans une ou plusieurs lignes dans une table SQL Server.

En règle générale, vous voudriez utiliser l’instruction UPDATE avec une clause WHERE pour spécifier quelles lignes mettre à jour. Si vous n’utilisez pas la clause WHERE, alors toutes les lignes de la table seront mises à jour. L’exemple suivant montre un exemple simple d’utilisation de l’instruction T-SQL UPDATE pour modifier les valeurs dans une ligne de la table myLogins.

UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1

Comme je l’ai mentionné, si vous omettez la clause WHERE, la colonne du nom de chaque ligne serait définie sur la nouvelle valeur. De même, si la clause WHERE inclut plusieurs lignes comme cela pourrait être le cas si vous utilisiez les opérateurs < ou >, alors plusieurs lignes correspondantes seraient mises à jour.

Mise à jour des lignes de table pour les résultats d’une requête

Tout comme avec l’instruction INSERT, vous pouvez également mettre à jour des lignes dans une table en utilisant des valeurs d’une autre table. Dans l’exemple suivant, vous pouvez voir comment utiliser une mise à jour SQL à partir d’une autre table.

UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id

Ici, vous pouvez voir que l’instruction UPDATE agira sur la table myLogins, et que la colonne du nom sera mise à jour en utilisant les valeurs de la table myLogins2 où la valeur dans les colonnes id des deux tables correspondent.

The UPDATE statement lets you update rows in one table using values from another table (Image credit: Petri/Michael Otey)

Comme vous pouvez le deviner, il existe bien plus d’options pour utiliser l’instruction UPDATE. Votre requête peut mettre à jour plusieurs lignes, elle peut être plus complexe en utilisant des jointures, et vous pouvez utiliser la clause TOP, la clause ORDER BY, les expressions de table communes (CTE) et bien d’autres pour construire vos requêtes de mise à jour.

Supprimer des lignes avec DELETE et TRUNCATE en T-SQL

Comme vous pouvez vous y attendre, vous pouvez supprimer des lignes d’une table en utilisant l’outil interactif SSMS Query Designer, PowerShell ou Integration Services. Cependant, la méthode la plus courante est d’utiliser l’instruction SQL DELETE.

La déclaration DELETE T-SQL supprime une ou plusieurs lignes d’une table SQL Server. Il va sans dire, mais vous devriez utiliser la déclaration DELETE SQL avec prudence car elle supprime définitivement des données de vos tables. En cas d’erreur, vous pourriez avoir besoin de restaurer les données à partir d’un instantané, du journal des transactions ou d’une sauvegarde.

L’exemple suivant montre comment supprimer une ligne de la table myLogins :

DELETE FROM myLogins WHERE id = 1

Ici, vous pouvez voir qu’une ligne dans la table myLogins sera supprimée lorsque la valeur de la colonne id est égale à 1. Vous pouvez également supprimer plusieurs lignes en modifiant la clause WHERE comme dans l’instruction suivante, qui supprime toutes les lignes dont la valeur id est supérieure à 50.

DELETE FROM myLogins WHERE id &gt; 50
You can delete multiple rows by changing the WHERE clause (Image credit: Petri/Michael Otey)

Tout comme l’instruction UPDATE, si vous omettez la clause WHERE, toutes les lignes de la table seront supprimées. Par exemple, l’exemple suivant supprime toutes les lignes de la table myLogins :

DELETE FROM myLogins

Supprimer des lignes à partir des résultats d’une requête

Tout comme les instructions INSERT et UPDATE, l’instruction DELETE est également capable d’agir à partir des résultats d’une requête. L’exemple suivant montre comment vous pouvez supprimer des lignes en fonction d’une requête :

DELETE FROM myLogins WHERE login_date &lt; '12-31-2022'

Ici, toutes les lignes de la table myLogins qui ont une date antérieure au 31/12/22 dans la colonne login_date seront supprimées.

I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.

DELETE vs TRUNCATE

La commande DELETE T-SQL est capable de supprimer une ou plusieurs lignes d’une table. Cependant, ce n’est pas le seul moyen de supprimer des lignes d’une table. Vous pouvez supprimer toutes les lignes d’une table SQL Server en utilisant l’instruction TRUNCATE TABLE T-SQL.

La commande DELETE est une action entièrement journalisée. En revanche, l’instruction TRUNCATE TABLE est une action minimale. Cela signifie que la commande TRUNCATE fonctionnera légèrement mieux et moins d’entrées seront ajoutées au journal des transactions. Vous pouvez voir un exemple d’utilisation de TRUNCATE dans la liste suivante.

TRUNCATE TABLE myLogins

Cela supprimera toutes les données dans la table myLogins.

Résumé

Dans ce tutoriel, vous avez vu comment ajouter, modifier et supprimer des lignes dans une table SQL Server en utilisant les instructions INSERT, UPDATE et DELETE T-SQL. Dans chaque cas, j’ai expliqué comment travailler avec des valeurs de ligne unique et comment travailler avec plusieurs lignes en résultat d’une sous-requête. De plus, vous avez vu comment les instructions DELETE et TRUNCATE sont différentes, même si elles peuvent toutes deux essentiellement supprimer des lignes d’une table.

Article connexe:

Source:
https://petri.com/sql-insert-update-delete-truncate/