Retour à la liste des articles Articles
11 minutes de lecture

INSERT SQL, UPDATE SQL, DELETE SQL - Oh là là !

Vous avez besoin de comprendre SQL INSERT, UPDATE, ou DELETE? Nous vous aiderons à vous mettre à niveau grâce à un mode d'emploi complet et à des exemples utiles !

INSERT, UPDATE ou DELETE en SQL

Les instructions SQL INSERT, UPDATE, et DELETE: de quoi s'agit-il ? Si vous êtes un ingénieur en données, un administrateur de base de données ou même un simple fan de données, vous vous retrouverez un jour avec une base de données qui deviendra votre "bébé". Chargé de ce petit bout de chou, vous allez devoir le nourrir et le changer. Oui, nous parlons toujours de bases de données ! Les fonctions SQL INSERT, UPDATE et DELETE vous permettent de vous assurer que vos données sont à jour et ne contiennent pas d'informations inutiles ou périmées.

Les instructions INSERT, UPDATE et DELETE, ainsi que SELECT et MERGE, sont connues sous le nom d'instructions DML (Data Manipulation Language), qui permettent aux utilisateurs de SQL de visualiser et de gérer les données. Bien entendu, les données sont souvent mises à jour par l'application elle-même, mais elles nécessitent régulièrement une saisie ou une maintenance manuelle, ce qui exige non seulement une bonne compréhension de SQL pour les débutants (cet article suppose que vous avez ces connaissances de base de SQL - consultez notre cours SQL pour les débutants et notre liste d'articles sur SQL si ce n'est pas déjà fait), mais aussi de INSERT, UPDATE et DELETE en SQL.

Cet article présente les bases de SQL INSERT, SQL UPDATE, et SQL DELETE, mais si vous souhaitez un tutoriel plus complet, consultez notre cours Comment modifier une base de données avec SQL . Il contient tout ce dont vous avez besoin pour faire des instructions DML un jeu d'enfant.

L'hôpital pour enfants Mickey Mouse - Une étude de cas de base de données

Examinons ces trois instructions SQL une par une pour comprendre leur fonctionnement.

Nous allons utiliser un exemple de base de données pour expliquer chacune des trois. Pour rester dans le thème du bébé, disons que vous êtes l'administrateur des données d'un hôpital pour enfants, "l'hôpital pour enfants Mickey Mouse", pour être précis. L'hôpital conserve les dossiers de tous ses petits patients, y compris leur âge, leur poids, les résultats de leurs tests sanguins - vous voyez l'adorable tableau.

En général, les médecins saisissent et mettent à jour ces informations dans le système de l'hôpital chaque fois qu'ils voient leurs patients, et une grande partie de l'insertion, de la mise à jour et de la suppression des enregistrements dans la base de données est effectuée par le système. Mais il y a souvent des choses qui doivent être corrigées manuellement, et en tant qu'administrateur de la base de données résidente, c'est le moment de briller !

Dans l'article ci-dessous, nous utilisons trois tables différentes pour expliquer les trois différentes instructions.

Le premier exemple de table montre les dossiers des patients et leurs informations de base :

Table des patients : Patient

PatientIDSurnameFirstNameDOBSexWeightHeightVaccinated
15223SmithDeniz12/31/2018F21.429.2Y
15224AgarwalArjun08/29/2017M28.134.2Y
15225AdamsPoppy02/14/2015F34.039.2N
15226JohnsonTierra08/15/2019F14.624.5Y
15227KhouriMohammed03/30/2014M41.544.1Y
15228JonesBen04/04/2011M70.152.2Y
15229KowalczykAlexandra08/27/2019F15.223.9Y

La table numéro deux représente les différents services de l'hôpital et les groupes et catégories dont ils font partie :

Table des services : Department

DepartmentIDDepartmentNameGroupNameCategoryName
1CardiologyHeart CenterClinical
2Central ICUEmergencyClinical
3EmergencyEmergencyClinical
4CommunicationsAdministrationOperational
5OncologyInternal MedicineClinical
6NeurologyInternal MedicineClinical
7Human ResourcesAdministrationOperational
8PathologyServiceTechnical
9RadiologyServiceTechnical
10PharmacyServiceTechnical
11Executive BoardAdministrationOperational
12UrologySurgeryClinical
13HematologyInternal MedicineClinical
14Montana WardWardOperational
15Chicago WardWardOperational
16Lincoln WardWardOperational
17Yellowstone WardWardOperational
18Brooklyn WardWardOperational

La table numéro trois enregistre les visites des patients au fil des ans :

Table des admission des patients : PatientAdmittance

PatientIDLastAdmittedLastDischarged
3312/29/195201/05/1953
34--
3508/01/200408/04/2004
3607/28/201107/30/2011
3705/27/195005/30/1950
38--
3910/11/197010/20/1970

Armés de ces exemples de tables, entrons dans le vif du sujet avec INSERT, UPDATE, et DELETE.

INSÉRER des données avec SQL

Tout comme les bébés, de nouvelles données naissent chaque minute. Grâce à de nombreux systèmes bien conçus, ces données sont souvent ajoutées de manière transparente aux bases de données auxquelles elles sont destinées. Dans de nombreux cas, cependant, vous devrez les ajouter manuellement, et c'est là que l'instruction INSERT de SQL entre en jeu.

INSERT est la solution idéale pour ajouter une ou plusieurs lignes à une table. INSERT peut également vous aider à ajouter des lignes d'une table à une autre.

Examinons la structure de base d'une instruction SQL INSERT:

INSERT INTO tableName
(column1, column2, ...)
VALUES (value1, value2, ...)

Tout d'abord, nous devons identifier la table dans laquelle nous voulons insérer des lignes. Ensuite, nous spécifions les colonnes que nous voulons remplir. Enfin, nous stipulons les valeurs que nous devons ajouter. C'est la forme de base de la fonction INSERT, et elle est assez intuitive.

Pour donner à cette structure une application concrète, voici un exemple tiré de notre étude de cas.

L'un des médecins de l'hôpital pour enfants Mickey Mouse a une patiente nouveau-née qui n'a pas encore de prénom. Le médecin a besoin d'entrer immédiatement le bébé dans la base de données afin d'accéder à un essai de médicament pour l'enfant malade, mais le système ne permet pas de soumettre le dossier de la petite sans nom. Le médecin souhaite que la patiente soit ajoutée à l'aide de son numéro de patient et que son nom soit laissé en blanc jusqu'à une date ultérieure. En tant qu'administrateur, vous devrez saisir la patiente manuellement dans la base de données.

Voici à quoi ressemblerait la déclaration INSERT:

INSERT INTO dbo.Patient
            (Surname, FirstName, DOB, Sex, [Weight], Height, Vaccinated)
VALUES      (NULL, NULL,'2019-11-19', 'F', 14.0, 23.1, 'No')

Comme vous pouvez le constater, nous n'indiquons pas seulement le nom de la table dans laquelle nous devons effectuer l'insertion, mais aussi les noms des colonnes et des valeurs que nous voulons ajouter. Nous ne spécifions pas le PatientID dans la liste des colonnes car, en tant que colonne d'identité, elle est automatiquement remplie.

Parce que nous voulons garder le nom de la patiente vide pour le moment, nous écrivons NULL pour les colonnes de nom.

Une fois que nous aurons exécuté cette commande, elle créera l'ajout suivant à la base de données :

Insérer des données en utilisant SQL

Insertion de plusieurs lignes

Pour insérer plus d'une ligne de données avec une seule instruction, utilisez des parenthèses et des virgules pour spécifier les nouvelles lignes distinctes.

INSERT INTO dbo.Patient
            (Surname, FirstName, DOB, Sex, [Weight], Height, Vaccinated)
VALUES      ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'No'),
VALUES      ('Hitson', 'Jenny','2019-11-19', 'F', 13.7, 22.3, 'No')

Conseil ! Utilisez une transaction pour tester votre insertion sans valider et modifier définitivement votre table. Pour ce faire, commencez par BEGIN TRANSACTION, et terminez la transaction par COMMIT, si vous souhaitez conserver les modifications, ou par ROLLBACK, si vous souhaitez annuler ce que vous avez fait. Voici comment ajouter une transaction à l'exemple ci-dessus :

COMMENCER LA TRANSACTION

BEGIN TRANSACTION
INSERT INTO dbo.Patient
            (Surname, FirstName, DOB, Sex, [Weight], Height, Vaccinated)
VALUES      ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'No'),
	        ('Hitson', 'Jenny','2019-11-19', 'F', 13.7, 22.3, 'No')

ROLLBACK
--COMMIT

Insertion à partir d'une table dans une autre

Vous devez insérer une ou plusieurs lignes de données d'une table dans une autre ? Vous pouvez utiliser l'instruction INSERT INTO SELECT.

Imaginons que plusieurs de nos jeunes patients participent à un nouvel essai de médicament et que vous créiez une nouvelle table pour enregistrer leur participation. La structure de base de cette instruction serait la suivante :

INSERT INTO targetTable (column1, column2, ...)
SELECT      (column1, column2, ...)
FROM        sourceTable

La déclaration pour notre exemple d'essai de médicament ressemblerait à ceci :

INSERT INTO [dbo].[DrugTrialAlpha]
           (Surname, FirstName, DOB, Sex, DrugOrPlacebo, Notes)
SELECT
	p.Surname, p.FirstName, p.DOB, p.Sex, 'Drug', NULL
FROM dbo.Patient AS p
WHERE
	p.PatientID IN (15226, 15229, 15230)
UNION
SELECT
	p.Surname, p.FirstName, p.DOB, p.Sex, 'Placebo', NULL
FROM dbo.Patient AS p
WHERE
	p.PatientID IN (15231)

Vous pouvez également écrire cet exemple sous la forme d'une expression de table commune (CTE). Les CTE peuvent être utilisées entre autres pour créer un ensemble de résultats temporaire qui peut être réutilisé pendant la requête. Voici à quoi ressemblerait la même commande écrite en tant que CTE :

WITH drugTrialPatients (Surname, FirstName, DOB, Sex, DrugOrPlacebo, Notes)
AS (
	SELECT
		p.Surname, p.FirstName, p.DOB, p.Sex, 'Drug', NULL
	FROM dbo.Patient AS p
	WHERE
		p.PatientID IN (15226, 15229, 15230)
	UNION
	SELECT
		p.Surname, p.FirstName, p.DOB, p.Sex, 'Placebo', NULL
	FROM dbo.Patient AS p
	WHERE
		p.PatientID IN (15231)
	)
INSERT INTO [dbo].[DrugTrialAlpha]
           (Surname, FirstName, DOB, Sex, DrugOrPlacebo, Notes)
SELECT Surname, FirstName, DOB, Sex, DrugOrPlacebo, Notes
FROM drugTrialPatients
Insertion d'une table dans une autre

Astuce ! Si vous utilisez SELECT pour ajouter des données d'une table à une autre, il est bon dans un premier temps d'exécuter l'instruction SELECT seule, afin de vous assurer que les bonnes lignes sont renvoyées et que vous êtes satisfait du résultat !

Mise à jour des données avec SQL

L'instruction SQL UPDATE est une autre tâche courante utilisée par les ingénieurs de données et les administrateurs de bases de données. Utilisez-la pour modifier la valeur d'une colonne pour une ou plusieurs lignes.

Voici comment une instruction SQL UPDATE est généralement structurée :

UPDATE tableName
SET column1=value1, column2=value2,...
WHERE filterColumn=filterValue

Comme pour l'instruction SQL INSERT, nous devons d'abord identifier la table que nous souhaitons mettre à jour. Ensuite, nous utilisons la clause SET qui détaille les colonnes que nous voulons mettre à jour. Enfin, nous utilisons la clause WHERE pour sélectionner les lignes que nous voulons inclure dans la mise à jour.

Conseil ! Étant donné qu'une nouvelle valeur de colonne peut affecter plus d'une ligne, assurez-vous que vous êtes satisfait de l'étendue de votre mise à jour avant de la valider ! Tout comme INSERT, une mise à jour SQL UPDATE peut être écrite comme une transaction, ce qui signifie que vous pouvez effectuer soit un COMMIT soit un ROLLBACK de la mise à jour selon que vous êtes satisfait ou non des changements.

Voici un exemple utilisant notre étude de cas. Notre service des urgences change de nom pour devenir le service de "traumatologie et de chirurgie d'urgence", et son nom doit donc être modifié dans la base de données. Pour mettre à jour ce nom, vous pouvez exécuter cette instruction :

UPDATE dbo.Department
   SET DepartmentName = 'Trauma and Emergency Surgery'
WHERE DepartmentID = 3
SELECT * FROM dbo.Department WHERE DepartmentName = 'Emergency'
Mettre à jour des données en utilisant SQL

Voici à quoi ressemblerait le nom du service mis à jour dans notre table :

Mettre à jour des données en utilisant SQL

Lorsque vous utilisez l'instruction SQL UPDATE, veillez à ce que votre clause WHERE spécifie précisément les lignes que vous souhaitez mettre à jour. En cas de doute, écrivez l'instruction en tant que transaction, que vous pourrez ensuite annuler si vous n'êtes pas satisfait de la modification - aucun mal ne sera fait !

Pour vérifier que vous sélectionnez les bonnes données à mettre à jour, vous pouvez effectuer un test en utilisant SELECT pour vous assurer que vous ciblez les bonnes lignes.

Mise à jour de plusieurs lignes

Il est facile de mettre à jour plusieurs lignes de données avec l'instruction UPDATE. La clause WHERE est votre amie ici.

Imaginons que vous souhaitiez recatégoriser toutes les unités d'hospitalisation de "Ward" à "Room" dans la colonne groupe.

UPDATE dbo.Department
   SET GroupName = 'Room'
WHERE GroupName = 'Ward'

Ce qui changerait la table comme suit :

Mise à jour de plusieurs lignes Mise à jour de plusieurs lignes

Suppression de données avec SQL

Romper

SQL DELETE est le changement de couche pour bébé du monde SQL. Il y a quelque chose que vous ne voulez pas dans cette table ? Supprimez-le !

DELETE supprime une ou plusieurs lignes d'une table, mais faites attention ! Vous devez vous assurer que vous savez ce que vous supprimez avant d'aller de l'avant et de valider l'instruction !

Voici à quoi ressemble une instruction SQL DELETE simple:

DELETE tableName
WHERE  filterColumn=filterValue;

Elle se compose de deux parties : la spécification de la table et la spécification de WHERE - les lignes que vous souhaitez supprimer.

Si vous connaissez la clé primaire d'une ligne que vous voulez supprimer, votre travail est simple. Vous voulez supprimer le quartier Lincoln de votre table ? C'est tout simple :

DELETE FROM dbo.Department
WHERE DepartmentID = 16
Supprimer des données en utilisant SQL

Suppression de plusieurs lignes

Revenons à l'hôpital pour enfants Mickey Mouse. Supposons que le responsable des données de l'hôpital veuille supprimer tous les dossiers des patients qui ne sont pas venus à l'hôpital depuis 1969. Voici comment vous pourriez écrire cette instruction DELETE:

DELETE FROM dbo.PatientAdmittance
WHERE LastDischarged < '1969-01-01'

Le résultat ? Voici la table avant...

Suppression de plusieurs lignes

... et voici à quoi elle ressemble après l'exécution du script :

Suppression de plusieurs lignes

La meilleure chose à faire avant d'exécuter cette instruction DELETE serait de tester le résultat en utilisant SELECT. Celle-ci renvoie toutes les lignes que vous étiez sur le point de supprimer, ce qui vous permet de vérifier d'abord si vous supprimez les bonnes lignes !

Pour exécuter ce test, vous devez taper :

SELECT * FROM dbo.PatientAdmittance
WHERE LastDischarged < '1969-01-01'

Attention ! Si vous utilisez DELETE sans ajouter une clause WHERE, vous allez supprimer toutes les lignes de votre table.

Conclusion

Une fois les bases SQL maîtrisées, les instructions SQL INSERT, UPDATE et DELETE sont la prochaine étape vers la gloire des bases de données ! Si cet article vous a donné envie d'en savoir plus, consultez notre cours convivial pour débutants, Comment modifier des données avec SQL. Il vous permettra non seulement d'approfondir ces informations fondamentales, mais aussi de vous former :

  • Comment gérer les valeurs de remplissage automatique et comment combiner les commandes de manipulation de données SQL avec IDENTITY, SEQUENCE et NEWID().
  • Comment combiner les commandes SQL DML avec NULLS.
  • Comment combiner les commandes SQL DML avec JOINS.
  • Comment modifier les données en utilisant les valeurs par défaut des colonnes.
  • Comment effectuer des opérations CRUD, la plus importante des opérations DML.

Avec 52 exercices interactifs, un accès à vie au cours, un certificat d'achèvement et une garantie de remboursement de 30 jours, il n'y a pas grand-chose à perdre à essayer !

Alors, qu'attendez-vous ? INSERT de nouvelles connaissances dans votre vie maintenant, UPDATE votre formation SQL, et DELETE toutes ces excuses ! Nous vous verrons autour des bases de données.