Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  GUI  Outils  Déployer  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Planification de l'installation
Planification d'une migration
SQL Server 2005 Developer
SQL Server 2008 R2 Developer
SQL Server 2012 Developer
SQL Server 2014 Developer
SQL Server 2016 Developer
SQL Server 2017 Developer
SQL Server 2019 Developer
Type de données élémentaire
Les instructions de boucles
Référence des mots réservés
Référence des instructions
Référence des fonctions
Référence des bases de données systèmes
Référence des tables systèmes
Référence des vues systèmes
Référence des utilisateurs par défaut
Référence des Stored Procedures système
Objets de base du SQL
Gérer les données avec Transact-SQL
Langage de définition de données/Data Definition Language (DDL)
Instructions DML : Instructions INSERT, UPDATE, DELETE et MERGE
Recherche en texte intégral (Full-Text Search)
Prise en charge de JSON dans SQL Server
STORED PROCEDURES
Les opérations
Activer l'intégration de SQL Server de CLR à l'aide de Transact-SQL
Afficher l'historique des requêtes SQL
Afficher tous les index dans une base de données SQL Server
Afficher toutes les tables dans une base de données
Comment identifier les requêtes SQL d'exécution lente dans SQL Server
Exporter la base de données SQL Server dans un fichier SQL
Exporter des tables dans un fichier .SQL avec Microsoft SQL Server Management Studio
Obtenir le nom du serveur et des bases de données dans SQL Server
SQL Server Management Studio (SSMS)
DBeaver
HeidiSQL
Navicat
SQL Server Analytic Services (SSAS)
SQL Server Data Tools (SSDT)
SQL Server Integration Services (SSIS)
SQL Server Reporting Services (SSRS)
sqlcmd
SQL Data Compare (Redgate)
SSIS avec SQL Server Management Studio (SSMS)
SSIS avec Visual Studio 2017
Références des codes d'erreur du SQL Server
Référence de termes et du vocabulaire
Préface
Notes légal
Dictionnaire
Recherche

Instructions DML : Instructions INSERT, UPDATE, DELETE et MERGE

Les instructions DML, tirant son nom de l'abréviation de l'anglicisme «Data Manipulation Language», sont l'élément du langage de programmation SQL utilisé pour la récupération et la manipulation des données. À l'aide de ces instructions, vous pouvez effectuer des opérations telles que : ajouter de nouvelles lignes, mettre à jour et supprimer des lignes existantes, fusionner des tables,...

Les instructions du DML sont les suivantes :

Instruction Description
INSERT Ajouter de nouvelles lignes à une table
UPDATE Mise à jour des valeurs des champs
DELETE Supprimer des lignes d'une table
MERGE Fusion de tables
SELECT Affiche la liste d'un/des que contient un ou des tables

Instruction INSERT

L'instruction INSERT de SQL Server est utilisée pour ajouter de nouvelles lignes à une table. Avant de vous familiariser avec cette déclaration, veuillez prendre en compte les points suivants :

L'insertion utilise une syntaxe simplifié suivante :

INSERT INTO nom_table VALUES (valeur, valeur, valeur,...)

Insérer une nouvelle ligne dans le tableau :

  1. INSERT INTO employees VALUES (2 , 'Jacques Gagnon' , 30200 , '2014/02/16')

Le tableau suivant reflète les données de la table employees une fois l'instruction INSERT terminée :

emp_no emp_nom emp_salaire emp_dateembauche
1 Jean Tremblay 50000 2021/11/01
2 Jacques Gagnon 30200 2014/02/16

Les points importants

Utilisation d'une liste de colonnes

L'exemple suivant utilise une liste de colonnes pour spécifier explicitement les valeurs qui sont insérées dans chaque colonne (cette syntaxe est plus stable si vous modifier la structure des tables) :

INSERT INTO nom_table (nom_colonne, nom_colonne , nom_colonne ...) VALUES (valeur, valeur, valeur ...)

Insertion d'une nouvelle ligne dans le tableau :

  1. INSERT INTO employees (emp_no, emp_nom, emp_salaire, emp_dateembauche) VALUES (6 , 'Steeve Roy' , 37100 , GETDATE())

Instruction INSERT INTO SELECT

Cette syntaxe permet de copier des éléments de données d'une autre table dans la table cible demandée :

INSERT INTO nom_table_cible (nom_colonne, nom_colonne, nom_colonne ...)
SELECT ...
FROM nom_table_source
WHERE ...

On aura par exemple l'instruction suivante pour l'insertion d'employée pour le département numéro 50 :

  1. INSERT INTO employees (emp_no , emp_nom , emp_salaire) SELECT emp_no , emp_nom , emp_salaire FROM   employees WHERE  no_departement = 50

Instruction UPDATE

L'instruction UPDATE est utilisée pour modifier les lignes existantes :

UPDATE table_name
SET column=value, column=value ...
WHERE condition

Mise à jour du salaire de l'employé numéro 77 :

  1. UPDATE employees SET emp_salaire = 50000 WHERE emp_no = 77

Il est possible de mettre à jour plusieurs champs en même temps, par exemple mettre à jour le salaire, le nom et le prénom du salarié numéro 77 :

  1. UPDATE employees SET emp_salaire = 50000, emp_nom = 'Steeve Tremblay' WHERE emp_no = 77

Une sous-requête peut être imbriquée dans l'instruction UPDATE de SQL Server. Par exemple, mettre à jour le salaire des employés du département 71 afin qu'il corresponde au salaire moyen des employés du département 70 :

  1. UPDATE employees SET emp_salaire = (SELECT AVG(emp_salaire) FROM employees WHERE no_departement = 70) WHERE no_departement = 71

Il est possible de mettre à jour vers une valeur NULL ou DEFAULT :

  1. UPDATE employees SET emp_salaire = DEFAULT WHERE emp_nom = 'Jean Roy'
  2. UPDATE employees SET emp_salaire = NULL WHERE no_departement = 79

L'exécution de l'instruction UPDATE de SQL Server sans utiliser la clause WHERE de SQL Server entraîne la mise à jour de tous les champs d'une colonne.

Instruction DELETE

L'instruction DELETE de SQL Server est utilisée pour supprimer des lignes existantes d'une table :

DELETE FROM nom_table WHERE condition

L'exemple suivant permet de supprimer ligne contenant les données de l'employé numéro 107 :

  1. DELETE FROM employees WHERE emp_no = 107

Une sous-requête peut être imbriquée dans l'instruction DELETE :

  1. DELETE FROM employees WHERE no_departement = (SELECT no_departement FROM departement WHERE nom_departement = 'Ventes')

Instruction MERGE

L'instruction MERGE de SQL Server est utilisée pour synchroniser les données de deux tables, en fonction des différences trouvées entre elles, si la même ligne existe dans les deux tables (ligne avec le même identifiant client par exemple), mais que chaque ligne a toujours des valeurs différentes (chaque table contient un numéro de téléphone différent de ce client), l'opération UPDATE sera exécutée. Si la ligne n'existe que dans une table, l'opération INSERT sera exécutée.

Les illustrations suivantes illustrent le concept de fusion. A la fin de chaque mois, les données de la table Clients sont fusionnées avec les données de la table Sauvegardes. Au début du mois, la seule activité MERGE transférait (INSERT) toutes les lignes, telles quelles, vers la table de sauvegarde (à condition que ce soit la première fois que la table de sauvegarde soit remplie).

NoClient NomClient Paquet
1 Antoine Tremblay 2.5
2 Jean Marcoux 5
3 Stephane Marchand 3.5
4 Johanne Gagné 2
5 Kathy Bonenfant 1
NoClient NomClient Paquet
1 Antoine Tremblay 2.5
2 Jean Marcoux 5
3 Stephane Marchand 3.5
4 Johanne Gagné 2
5 Kathy Bonenfant 1

En fin de mois, du fait des modifications ayant été effectuées dans la table Clients, les données sont fusionnées avec la table Sauvegardes comme suit :

NoClient NomClient Paquet
1 Antoine Tremblay 2.5
2 Jean Marcoux 5
3 Stephane Marchand 3.5
4 Johanne Gagné 2
5 Kathy Bonenfant 1
6 Annie Roy 5
NoClient NomClient Paquet
1 Antoine Tremblay 2.5
2 Jean Marcoux 5
3 Stephane Marchand 3.5
4 Johanne Gagné 2
5 Kathy Bonenfant 1
6 Annie Roy 5

Voici la syntaxe :

MERGE INTO table_destination alias
USING table_source alias
ON condition
WHEN MATCHED THEN
UPDATE SET
alias_table_destination.colonne = alias_table_source.colonne,
alias_table_destination.colonne = alias_table_source.colonne
...
WHEN NOT MATCHED THEN
INSERT VALUES (alias_table_source.colonne, alias_table_source.colonne ..
)

on aura par exemple :

  1. MERGE INTO  sauvegarde_client Sauvegardes
  2. USING       Clients clts
  3. ON         (Sauvegardes.no_client = clts.no_client)
  4. WHEN MATCHED THEN
  5. UPDATE SET
  6. Sauvegardes.nom_client = clts.nom_client ,
  7. Sauvegardes.client_paquet = clts.client_paquet
  8. WHEN NOT MATCHED THEN
  9. INSERT VALUES(clts.no_client , clts.nom_client , clts.client_paquet)

Transactions de base de données

Les transactions sont une seule unité de diverses commandes de modification (telles que UPDATE, INSERT, DELETE), qui dans la plupart des cas sont associées à un seul groupe logique. Le terme «un seul groupe logique» fait référence à un ensemble d'opérations avec connexion logique ; par exemple : un lot d'opérations DML destinées à mettre à jour des éléments de données spécifiques dans la table clients.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mercredi, le 3 novembre 2021