Oracle
 sql >> Base de données >  >> RDS >> Oracle

Instruction INSERT dans Oracle

L'instruction INSERT dans Oracle est une commande DML (Data Manipulation Language). Il est utilisé pour insérer de nouvelles lignes dans les tables oracle de la base de données oracle

Syntax

INSERT INTO <table_name>
(col1, col2, ... column_n )
VALUES
(value1, value2, ... value_n );

Ici
table_name  :Table dans laquelle de nouveaux enregistrements doivent être insérés
col1,col2  :est la colonne dans les tableaux
valeur1,valeur2…. :sont les valeurs correspondant à col1,col2 …dans le tableau

Une seule ligne est insérée avec cette syntaxe dans le tableau

Supposons que vous souhaitiez saisir des enregistrements dans la table EMP, puis

insert into emp (emp_id, emp_name,dept_id,first_name,last_name,salary)
values ('101','JOHN', 10,'JOHN' ,'ROGER', 3000);

Remarque importante

  • Il n'est pas nécessaire de donner des noms de colonne dans le cas où vous spécifiez les valeurs dans le bon ordre et la valeur de chaque colonne du tableau est fournie
  • Il est recommandé de mettre des guillemets simples autour des valeurs de caractères.

Comment insérer des valeurs nulles dans le tableau

Dans le cas où nous mettons des valeurs nulles pour les quelques colonnes, nous pouvons omettre les colonnes dans la commande d'insertion

insert into emp (emp_id, emp_name,dept_id,salary)
values ('101','JOHN', 10, 3000);

Insérer à l'aide de l'instruction Select

Nous pouvons également insérer dans le tableau en utilisant l'instruction select

INSERT INTO <table_name>
(col1, col2, ... column_n ) select col1, col2, ... column_n from < table_name2>

Cette méthode peut être utilisée pour insérer dans plusieurs lignes

  • Nous n'avons pas besoin d'utiliser la clause de valeurs ici
  • Nous devons faire correspondre la colonne de l'insert à la requête de sélection pour que cela fonctionne
  • Il n'est pas nécessaire de donner des noms de colonne dans le cas où vous spécifiez les valeurs dans le bon ordre et la valeur de chaque colonne du tableau est fournie
Example
insert into emp_master (emp_id ,salary) 
select emp_id ,salary from emp;

INSERT INTO emp_master (emp_id ,salary) 
  WITH sal AS ( 
    SELECT 201,5000    FROM dual UNION ALL 
    SELECT 201, 10000   FROM dual UNION ALL 
    SELECT 204, 10004 FROM dual UNION ALL 
    SELECT 7, 5675476    FROM dual 
  ) 
  SELECT * FROM sal;


 

Insérer la fonction de date dans le tableau

Supposons que nous ayons une colonne de type de données de date oracle dans la table, nous pouvons alors utiliser la fonction sysdate pour entrer la date dans l'instruction d'insertion

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, sysdate);

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, sysdate -1);

Ou si nous avons besoin de spécifier la date spécifique, nous pouvons utiliser le format standard pour la date 'DD-MON-YYYY'.Avec cette heure par défaut à minuit

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, '18-AUG-2018');

ou si nous devons saisir des données dans un format différent avec un certain temps, nous pouvons utiliser la fonction to_date

insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, TO_DATE('2018/08/18 01:02:44', 'yyyy/mm/dd hh24:mi:ss'));

Oracle insère toutes les instructions

L'instruction insert all d'Oracle nous aide à ajouter plusieurs lignes dans le tableau en une seule fois , ou nous pouvons ajouter plusieurs lignes dans différentes tables avec la même instruction insert

Syntaxe pour une table

INSERT ALL INTO
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;

Syntaxe pour plusieurs tables

INSERT ALL INTO
<table_name1> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name2> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name3> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;

Cela équivaut à

INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n );
INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )

Exemples

insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('102','SMITH', 10,'JOHN' ,'ROGER', 3000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;

insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
dept (dept_no, dept_name,dept_location) values ('20','BILLING', 'NEWYORK)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;

insérer toutes les déclarations peut également être utilisé de la manière ci-dessous

insert all 
 INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
 INTO dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
 WITH names AS ( 
     SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
     SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
     SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
     SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
   ) 
   SELECT * FROM names ;

Il est possible d'utiliser des instructions conditionnelles dans insérer toutes les instructions

insert all 
 WHEN 1=1 THEN 
 INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
 WHEN dept_no IS NOT NULL THEN 
 dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
 WITH names AS ( 
     SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
     SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
     SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
     SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
     SELECT 9 id, 'July' name,NULL dept_no,NULL dept_name,NULL location, 158750 sal     FROM dual 
   ) 
   SELECT * FROM names ;

J'espère que vous aimez ce contenu sur la déclaration d'insertion dans Oracle. J'ai expliqué différentes manières d'effectuer des insertions dans les tableaux avec de nombreux exemples.

Articles connexes

Instruction de mise à jour dans oracle :Nous utilisons l'instruction Update dans oracle pour modifier les lignes existantes dans la table oracle de la base de données oracle. La mise à jour peut être exécutée de plusieurs manières
Instruction de suppression de la table dans Oracle :la suppression de la table dans Oracle est utilisée pour supprimer les lignes. SUPPRIMER les lignes peuvent être effectuées à l'aide de la clause EXISTS/NOT EXISTS, table basée sur une sous-requête, cascade de la colonne de la table, modifiez les paramètres de stockage de la table
Comment modifier l'oracle de colonne d'ajout de table :aperçu utile de la façon de modifier l'oracle de colonne d'ajout de table. Des détails sur la fonction d'ajout rapide de colonnes introduite dans Oracle 11g sont également fournis
Documentation Oracle sur l'insertion