26th Apr 2022 11 minutes de lecture INSERT SQL, UPDATE SQL, DELETE SQL - Oh là là ! Rebecca McKeown sql apprendre sql extras Table des matières L'hôpital pour enfants Mickey Mouse - Une étude de cas de base de données INSÉRER des données avec SQL Insertion de plusieurs lignes COMMENCER LA TRANSACTION Insertion à partir d'une table dans une autre Mise à jour des données avec SQL Mise à jour de plusieurs lignes Suppression de données avec SQL Suppression de plusieurs lignes Conclusion 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 ! 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 : 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 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' Voici à quoi ressemblerait le nom du service mis à jour dans notre table : 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 : Suppression de données avec SQL 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 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... ... et voici à quoi elle ressemble après l'exécution du script : 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. Tags: sql apprendre sql extras