Instruction INSERT
L'instruction INSERT
permet de créer des enregistrements dans une table de base de données. Vous pouvez spécifier, au choix :
-
Une liste de valeurs à insérer sous la forme d'un nouvel enregistrement
-
Une instruction
SELECT
permettant de copier les données d'une autre table et de les insérer sous forme de nouveaux enregistrements
La syntaxe de l'instruction INSERT
est la suivante :
INSERT INTO nom_table [(nom_col, ...)] VALUES (expr, ...)
nom_col
est une liste facultative de noms de colonnes qui indique le nom et l'ordre des colonnes dont les valeurs sont spécifiées dans la clause VALUES
. Si vous omettez nom_col
, les expressions de valeur (expr
) doivent fournir des valeurs pour toutes les colonnes définies dans la table et elles doivent figurer dans le même ordre que les colonnes définies pour la table. nom_col
peut également indiquer une rubrique multivaluée, par exemple lastDates[4]
.
expr
représente la liste d'expressions donnant les valeurs des colonnes du nouvel enregistrement. Généralement, les expressions sont les valeurs constantes des colonnes (mais il peut également s'agir d'une sous-requête). Les valeurs de type chaîne de caractères doivent être placées entre guillemets simples ('). Pour inclure un guillemet simple (correspondant à une apostrophe) dans une valeur de type chaîne de caractères placée entre guillemets simples, utilisez deux guillemets simples consécutifs (par exemple 'L''instance'
).
Les sous-requêtes doivent être entre parenthèses.
Insérer une liste d'expressions.
INSERT INTO emp (nom_famille, prénom, id_emp, salaire, date_embauche)
VALUES ('Martin', 'Robert', 'E22345', 27500, DATE '2028-06-05')
Chaque instruction INSERT
ajoute un enregistrement à la table de base de données. Ici, nous avons ajouté un enregistrement à la table emp
de la base de données. Les valeurs sont spécifiées pour cinq colonnes. Les autres colonnes de la table n'ont pas reçu de valeur. Autrement dit, leur valeur est nulle.
Dans les types de données de conteneur, vous ne pouvez utiliser INSERT
que pour du texte, à moins de préparer une déclaration paramétrée et de générer le flux de données depuis votre application. Pour utiliser des données binaires, vous pouvez simplement assigner le nom de fichier en l'insérant entre des guillemets simples ou utiliser la fonction PutAs()
. Lorsque vous spécifiez un nom de fichier, le type de fichier est déduit de l'extension de fichier :
INSERT INTO nom_table (nom_conteneur) VALUES(? AS 'nomfichier.extension fichier')
Les types de fichiers non pris en charge seront insérés en tant que type FILE.
Lorsque vous utilisez la fonction PutAs()
, indiquez le type : PutAs(col, 'type')
, où la valeur du type est un type de fichier pris en charge comme décrit dans la section Récupération du contenu d'une rubrique Conteneur : fonctions CAST() et GetAs().
L'instruction SELECT
est une requête qui renvoie des valeurs pour chaque valeur nom_col
spécifiée dans la liste de noms de colonnes. L'utilisation d'une instruction SELECT
plutôt qu'une liste d'expressions de valeurs vous permet de sélectionner un ensemble de rangées dans une table et de l'insérer dans une autre table à l'aide d'une instruction INSERT
unique.
Utiliser une instruction SELECT
pour l'insertion.
INSERT INTO emp1 (prénom, nom_famille, id_emp, service, salaire)
SELECT prénom, nom_famille, id_emp, service, salaire from emp
WHERE service = 'D050'
Dans ce type d'instruction INSERT
, le nombre de colonnes à insérer doit être le même que celui des colonnes spécifiées dans l'instruction SELECT
. La liste de colonnes à insérer doit être identique aux colonnes de l'instruction SELECT
comme c'est le cas avec une liste d'expressions de valeurs dans l'autre type d'instruction INSERT
. Par exemple, la première colonne insérée correspond à la première colonne sélectionnée, la deuxième à la deuxième colonne sélectionnée, et ainsi de suite.
La taille et le type de données de ces colonnes correspondantes doivent être compatibles. Chaque colonne de la liste SELECT
doit avoir un type de données accepté par le pilote client ODBC ou JDBC pour une opération INSERT
/UPDATE
habituelle sur la colonne correspondante de la liste INSERT
. Les valeurs sont tronquées si la taille de la valeur de la colonne SELECT
est supérieure à celle de la colonne INSERT
correspondante.
L'instruction SELECT
est évaluée avant l'insertion de valeurs.