Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Les 3 différents types d’INSERT

Comment insérer des données dans une table ? Eh bien par INSERT. Derrière cette évidence saviez vous que vous avez en fait 3 types d'INSERT ?

INSERT / VALUES

Le courant d'entre tous, c'est celui-ci qui permet d'insérer les valeurs d'un enregistrement à la fois.

INSERT MaTable
VALUES (1, 2, 3)

Le INTO est toujours optionnel dans la syntaxe, la liste de champs suivant le nom de la table l'est aussi, si le nombre de valeurs dans le VALUES correspondant au nombre / type de champs de la table. Dans le cas contraire cette liste est obligatoire.

INSERT MaTable (ChampA, ChampB)
VALUES (1, 2)

Il est possible d'utiliser les mots clefs DEFAULT et DEFAULT VALUES , ils permettent respectivement d'insérer la valeur par défaut du champ où l'on spécifie DEFAULT ou NULL si ce dernier n'en possède pas. Pour le second cela permet d'indiquer que l'on souhaite les valeurs par défaut de tous les champs de la table.

-- Insertion de la valeur par défaut de ChampB
INSERT MaTable (ChampA, ChampB)
VALUES (1, DEFAULT)

-- Insertion de la valeur par défaut de tous les champs de la table
INSERT MaTable (ChampA, ChampB)
DEFAULT VALUES

Sous SQL Server 2008, il sera possible d'insérer plusieurs enregistrements à la fois avec cette syntaxe.

INSERT MaTable (ChampA, ChampB)
VALUES (1, 2), (3, 4), (5, 6)

Ici on insère 3 enregistrements dans MaTable.

INSERT / SELECT

La seconde variante permet l'insertion multiple d'enregistrements à partir d'une autre source de données (ou de la même).

INSERT MaTable
SELECT *
FROM MaTable2

La règle pour la liste de champ suivant la table où vont être inséré les enregistrements est la même que pour VALUES, le nombre de champs et leur type doivent être respectés. Il est donc aussi possible de fournir la liste des champs des 2 tables

INSERT MaTable (ChampA, ChampB)
SELECT ChampX, ChampY
FROM MaTable2

Fournir une constance est encore possible, elle sera juste ajouté au SELECT

INSERT MaTable (ChampA, ChampB)
SELECT ChampX, 7
FROM MaTable2

INSERT / EXEC

Dernière variante sans doute la moins connu, permet de récupérer le résultat d'une procédure stockée ou de l'exécution de SQL dynamique. La difficulté de cette syntaxe réside dans le fait qu'il faut créer la table sur laquelle faire l'insertion sans quasiment connaitre la structure renvoyée.

INSERT MaTable
EXEC MaProc 1, 2

INSERT MaTable2
EXEC('DBCC SHOWCONTIG WITH TABLERESULTS')

Ici aussi il est possible de spécifier la liste des champs de la table de destination derrière son nom. Par contre au niveau de l'EXEC il n'est pas possible de changer quoi que ce soit. On ne récupèrera de cette manière que le premier jeu de données dans le cas où la procédure stockées en renvoie plusieurs.

Cette méthode permet en fait de tout récupérer étant donné que le SQL dynamique y est autorisé, en prenant exemple sur le second exemple, même le flux de données des commandes DBCC peut être inséré dans des tables.

Bon développement…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mercredi 24 octobre 2007 17:57 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [PowerShell 3] Télécharger et installer la documentation en ligne par Blog de SPBrouillet (Pierrick BROUILLET) le il y a 17 heures et 24 minutes

- [#SharePoint 2010][#SQLServer 2012] AlwaysOn pour SharePoint (1/4) : Configuration (1ère partie)… par Le blog de Patrick [MVP SharePoint] le il y a 22 heures et 50 minutes

- Job Day @MIC Brussels - .Net Developers on Mobile applications par Le Blog (Vert) d'Arnaud JUND le 05-15-2012, 20:26

- [SharePoint 2010] – SharePoint 2010, Windows (Server) 8 et des erreurs IIS sont dans une VM… par Blog de SPBrouillet (Pierrick BROUILLET) le 05-14-2012, 12:10

- [Event] Windows Azure dev Camp le 20 juin! par Fathi Bellahcene le 05-13-2012, 09:29

- Comment redimensionner une image avec WinRT : plusieurs solutions par Richard Clark le 05-11-2012, 15:43

- Event : Swiss SharePoint Club Meeting #20 à Yverdon par Blog Technique de Romelard Fabrice le 05-11-2012, 15:24

- Réflechissons un peu ce matin à propos des ORM par Richard Clark le 05-11-2012, 08:48

- #SharePoint Solutions Roadshow le 5 juin à Issy ! par Le blog de Patrick [MVP SharePoint] le 05-09-2012, 15:10

- SharePoint : Mes alertes ne marchent pas … Que faire ? Comment réparer ou agir ? par The Mit's Blog le 05-08-2012, 14:59