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 :

Copier
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.

Exemple

Insérer une liste d'expressions.

Copier
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.

Important  

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 :

Copier
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.

Exemple

Utiliser une instruction SELECT pour l'insertion.

Copier
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.