4D v16

INSERT

Accueil

 
4D v16
INSERT

INSERT  


 

 

Commande INSERT

INSERT INTO {nom_sql | chaîne_sql}
[(ref_colonne, ..., ref_colonne)]
[VALUES({[INFILE]expression_arithmétique |NULL}, ..., {[INFILE]expression_arithmétique |NULL};) |sous_requête]

La commande INSERT permet d'ajouter des données dans une table existante. La table dans laquelle les données sont insérées est désignée via un argument de type nom_sql ou chaîne_sql. Les arguments facultatifs ref_colonne permettent de définir les colonnes dans lesquelles insérer les valeurs. Si aucune ref_colonne n'est passée, les valeurs seront insérées dans l'ordre des colonnes de la base (la première valeur passée sera insérée dans la première colonne, la deuxième dans la deuxième colonne, et ainsi de suite).

Note : Cette commande ne prend pas en charge les champs 4D de type Objet.

Le mot-clé VALUES permet de passer la ou les valeur(s) à insérer dans la ou les colonne(s) spécifiée(s). Vous pouvez passer soit une expression_arithmétique, soit NULL. Alternativement, une sous_requête peut être passée au mot-clé VALUES afin d'insérer une sélection de données en tant que valeurs.
Le nombre de valeurs passées via le mot-clé VALUES doit correspondre au nombre de colonnes défini par le ou les argument(s) ref_colonne. En outre, le type des données insérées doit correspondre à celui des colonnes de la table, ou au moins pouvoir être converti dans ce type.

Le mot-clé INFILE permet d’utiliser le contenu d’un fichier externe pour définir les valeurs d’un nouvel enregistrement. Ce mot-clé doit être utilisé uniquement avec des expressions de type VARCHAR. Lorsque le mot-clé INFILE est passé, la valeur expression_arithmétique est évaluée en tant que chemin d’accès de fichier ; si le fichier est trouvé, le contenu du fichier est inséré dans la colonne correspondante. Seuls des champs de type texte ou BLOB peuvent recevoir des valeurs issues d’un INFILE. Le contenu du fichier est transféré sous forme de données brutes, sans interprétation.
Le fichier recherché doit se trouver sur l’ordinateur hébergeant le moteur SQL, même si la requête provient d’un client distant. De même, le chemin d’accès doit être exprimé en respectant la syntaxe du système d’exploitation du moteur SQL. Il peut être absolu ou relatif.

La commande INSERT est utilisable dans les requêtes mono et multi-lignes. Toutefois, une requête INSERT multi-lignes ne permet pas d'effectuer d'opérations UNION et JOIN.

Le moteur de 4D admet les insertions multi-lignes de valeurs, ce qui permet d’alléger et d’optimiser le code, notamment lors de l’insertion de grandes quantités de données. La syntaxe des insertions multi-lignes est du type :

INSERT INTO {nom_sql | chaîne_sql}
[(ref_colonne, ..., ref_colonne)]
VALUES(expression_arithmétique, ..., expression_arithmétique), ..., (expression_arithmétique, ..., expression_arithmétique);

Cette syntaxe est illustrée dans les exemples 3 et 4.

Cet exemple simple permet d'insérer une sélection de la table2 dans la table1 :

INSERT INTO table1 (SELECT * FROM table2)

Cet exemple crée une table et insère des valeurs :

CREATE TABLE ACTEUR_FANS
(ID INT32, Nom VARCHAR);
INSERT INTO ACTEUR_FANS
(ID, Nom)
VALUES (1, 'Francis');

La syntaxe multi-lignes permet d’éviter la répétition fastidieuse de lignes :

INSERT INTO MaTable
(Chp1,Chp2,ChpBol,ChpDate,ChpHeure, ChpInfo)
VALUES
(1,1,1,'11/01/01','11:01:01','Premiere ligne'),
(2,2,0,'12/01/02','12:02:02','Deuxième ligne'),
(3,3,1,'13/01/03','13:03:03','Troisième ligne'),
………
(7,7,1,'17/01/07','17:07:07','Septième ligne');

Vous pouvez également utiliser des variables ou des tableaux 4D avec la syntaxe multi-lignes :

INSERT INTO MaTable
(Chp1,Chp2,ChpBol,ChpDate,ChpHeure, ChpInfo)
VALUES
( :vTabId, :vTabIdx, :vTabbol, :vTabdate, :vTabL, :vTabText);

Note : Vous ne pouvez pas combiner des variables simples et des tableaux dans la même instruction INSERT.



Voir aussi  

DELETE
expression_arithmétique
ref_colonne
sous_requête

 
PROPRIÉTÉS 

Produit : 4D
Thème : Commandes SQL

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Référence SQL ( 4D v16)