Section courante

A propos

Section administrative du site

INSERT

Insertion
Oracle Database SQL  

Syntaxe

INSERT [hint] INTO [schema.] table [@dblink] [t_alias] (column, column,...) VALUES ([expr, expr...]) [RETURNING expr, expr... INTO host_variable|plsql_variable]
INSERT [hint] INTO [schema.] table [@dblink] [t_alias] (column, column,...) SubQuery [RETURNING expr, expr... INTO host_variable|plsql_variable]
INSERT [hint] INTO [schema.] table [[SUB]PARTITION (ptn_name)] [t_alias] (column, column,...) VALUES ([expr, expr...]) [RETURNING expr, expr... INTO host_variable|plsql_variable]
INSERT [hint] INTO [schema.] table [[SUB]PARTITION (ptn_name)] [t_alias] (column, column,...) SubQuery [RETURNING expr, expr... INTO host_variable|plsql_variable]
INSERT [hint] INTO subquery WITH [READ ONLY | CHECK OPTION [CONSTRAINT constraint] ] [t_alias] (column, column,...) VALUES ([expr, expr...]) [RETURNING expr, expr... INTO host_variable|plsql_variable]
INSERT [hint] INTO subquery WITH [READ ONLY | CHECK OPTION [CONSTRAINT constraint] ] [t_alias] (column, column,...) SubQuery [RETURNING expr, expr... INTO host_variable|plsql_variable]

Paramètres

Nom Description
column Ce paramètre permet d'indiquer une colonne de la table, de la vue ou de la vue matérialisée. Dans la ligne insérée, chaque colonne de cette liste reçoit une valeur de la clause values_clause ou de la sous-requête. Si vous omettez une ou plusieurs colonnes de la table de cette liste, la valeur de colonne de cette colonne pour la ligne insérée est la valeur par défaut de la colonne telle que spécifiée lors de la création ou de la dernière modification de la table. Si une colonne omise a une contrainte NOT NULL et aucune valeur par défaut, la base de données renvoie une erreur indiquant que la contrainte a été violée et annule l'instruction INSERT. Si vous omettez complètement la liste des colonnes, la clause values_clause ou la requête doit spécifier des valeurs pour toutes les colonnes de la table.
data_item Ce paramètre permet d'indiquer une variable hôte ou une variable PL/SQL entreposant la valeur expr récupérée. Pour chaque expression de la liste RETURNING, vous devez spécifier une variable PL/SQL compatible de type correspondant ou une variable hôte dans la liste INTO.
dblink Ce paramètre permet d'indiquer un nom complet ou partiel d'un lien de base de données vers une base de données à distance où se trouve la table ou la vue. Vous pouvez insérer des lignes dans une table ou une vue à distance uniquement si vous utilisez la fonctionnalité distribuée d'Oracle Database. Si vous omettez dblink, Oracle Database suppose que la table ou la vue se trouve sur la base de données locale.
DML_table_expression_clause Ce paramètre permet d'indiquer les objets dans lesquels les données sont insérées.
expr Ce paramètre permet d'indiquer une syntaxe d'expression valide.
hint Ce paramètre permet d'indiquer un commentaire transmettant des instructions à l'optimiseur sur le choix d'un plan d'exécution pour l'instruction. Pour une insertion multitable, si vous spécifiez l'indicateur PARALLEL pour n'importe quelle table cible, l'intégralité de l'instruction d'insertion multitable est parallélisée même si les tables cibles n'ont pas été créées ou modifiées avec PARALLEL spécifié. Si vous ne spécifiez pas l'indicateur PARALLEL, l'opération d'insertion ne sera pas parallélisée à moins que toutes les tables cibles n'aient été créées ou modifiées avec PARALLEL spécifié.
insert_into_clause Ce paramètre permet d'indiquer le ou les objets cibles dans lesquels la base de données doit insérer des données.
materialized_view Ce paramètre permet d'indiquer la vue matérialisée renvoyées par une sous-requête, dans lesquelles les lignes doivent être insérées. Si vous spécifiez une vue ou une vue d'objet, la base de données insère des lignes dans la table de base de la vue.
schema Ce paramètre permet d'indiquer le schéma contenant la table, la vue ou la vue matérialisée. Si vous omettez le schéma, la base de données suppose que l'objet se trouve dans votre propre schéma.
single_table_insert Ce paramètre permet d'indiquer une insertion de simple table. Dans une insertion de table unique, vous insérez des valeurs dans une ligne d'une table, d'une vue ou d'une vue matérialisée en spécifiant des valeurs explicitement ou en récupérant les valeurs via une sous-requête. Vous pouvez utiliser la clause flashback_query_clause dans la sous-requête pour insérer des données antérieures dans la table.
subquery Ce paramètre permet d'indiquer des colonnes renvoyées par une sous-requête, dans lesquelles les lignes doivent être insérées.
table Ce paramètre permet d'indiquer le nom de la table ou de la table d'objets par une sous-requête, dans lesquelles les lignes doivent être insérées.
values_clause Ce paramètre permet d'indiquer une clause de valeurs. Pour une opération d'insertion dans une seule table, spécifiez une ligne de valeurs à insérer dans la table ou la vue. Vous devez spécifier une valeur dans la clause values_clause pour chaque colonne de la liste des colonnes. Si vous omettez la liste des colonnes, la clause values_clause doit fournir des valeurs pour chaque colonne de la table. Pour une opération d'insertion multitable, chaque expression de la clause values_clause doit faire référence aux colonnes renvoyées par la liste de sélection de la sous-requête. Si vous omettez la clause values_clause, alors la liste de sélection de la sous-requête détermine les valeurs à insérer, elle doit donc avoir le même nombre de colonnes que la liste de colonnes de la clause insert_into_clause correspondante. Si vous ne spécifiez pas de liste de colonnes dans la clause insert_into_clause, la ligne calculée doit fournir des valeurs pour toutes les colonnes de la table cible. Pour les deux types d'opérations d'insertion, si vous spécifiez une liste de colonnes dans la clause insert_into_clause, la base de données affecte à chaque colonne de la liste une valeur correspondante à partir de la clause values ??ou de la sous-requête. Vous pouvez spécifier DEFAULT pour n'importe quelle valeur dans values_clause. Si vous avez spécifié une valeur par défaut pour la colonne correspondante de la table ou de la vue, cette valeur est insérée. Si aucune valeur par défaut pour la colonne correspondante n'a été spécifiée, la base de données insère null.
view Ce paramètre permet d'indiquer la vue ou de la vue d'objets renvoyées par une sous-requête, dans lesquelles les lignes doivent être insérées. Si vous spécifiez une vue ou une vue d'objet, la base de données insère des lignes dans la table de base de la vue.
INTO Ce paramètre permet d'indiquer les valeurs des lignes modifiées doivent être entreposées dans la ou les variables spécifiées dans la liste data_item.
... ...

Description

Cette instruction permet d'insérer un nouvel enregistrement dans une table.

Exemples

L'exemple suivante permet d'insérer une ligne dans la table departments d'exemple :

  1. INSERT INTO departments VALUES (280, 'Recréation', 121, 1700);

Si la table departments a été créée avec une valeur par défaut de 121 pour la colonne manager_id, vous pouvez émettre la même instruction comme suit :

  1. INSERT INTO departments VALUES (280, 'Recréation', DEFAULT, 1700);

L'exemple suivante insère une ligne avec six colonnes dans la table des employees. L'une de ces colonnes est affectée de NULL et une autre est affectée d'un numéro en notation scientifique :

  1. INSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary, commission_pct) VALUES (207, 'Sylvain Maltais', 'smaltais@gladir.com', sysdate, 'PU_CLERK', 1.2E3, NULL);

L'exemple suivante a le même effet que l'exemple précédent, mais utilise une sous-requête dans la clause DML_table_expression_clause :

  1. INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, commission_pct FROM employees) VALUES (207, 'Sylvain Maltais', 'smaltais@gladir.com', sysdate, 'PU_CLERK', 1.2E3, NULL);

L'exemple suivante permet de copier les employés dont la commission dépasse 25 % de leur salaire dans la table bonuses :

  1. INSERT INTO bonuses SELECT employee_id, salary*1.1 FROM employees WHERE commission_pct > 0.25;

Voir également

Article - Les géants de l'informatique - Oracle

Dernière mise à jour : Lundi, le 11 mai 2015