sql >> Base de Datos >  >> RDS >> Oracle

declaración INSERT en Oracle

La declaración INSERT en Oracle es un comando DML (lenguaje de manipulación de datos). Se utiliza para insertar nuevas filas en las tablas de Oracle en la base de datos de Oracle

Syntax

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

Aquí
nombre_tabla :Tabla donde se deben insertar nuevos registros
col1,col2 :es la columna de las tablas
valor1,valor2…. :son los valores correspondientes a col1,col2 …en la tabla

Solo se inserta una fila con esta sintaxis en la tabla

Suponga que desea ingresar registros en la tabla EMP, entonces

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

Nota importante

  • No es necesario dar nombres de columna en caso de que esté especificando los valores en el orden correcto y se proporciona el valor para cada columna en la tabla
  • Se recomienda poner comillas simples alrededor de los valores de los caracteres.

Cómo insertar valores nulos en la tabla

En caso de que estemos poniendo valores nulos para las pocas columnas, podemos omitir las columnas en el comando de inserción

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

Insertar usando instrucción Select

También podemos insertar en la tabla usando la instrucción select

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

Este método se puede utilizar para insertar en varias filas

  • No necesitamos usar la cláusula de valores aquí
  • Necesitamos hacer coincidir la columna en el inserto con la consulta de selección para que funcione
  • No es necesario dar nombres de columna en caso de que esté especificando los valores en el orden correcto y se proporciona el valor para cada columna en la tabla
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;


 

Insertar función de fecha en la tabla

Supongamos que tenemos una columna de tipo de datos de fecha de Oracle en la tabla, luego podemos usar la función sysdate para ingresar la fecha en la declaración de inserción

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);

O si necesitamos especificar la fecha específica, podemos usar el formato estándar para la fecha 'DD-MON-YYYY'. Con esta hora predeterminada a medianoche

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

o si necesitamos ingresar datos en un formato diferente con algún tiempo, podemos usar la función 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 inserta todas las instrucciones

La instrucción Oracle insert all nos ayuda a agregar varias filas en la tabla de una sola vez, o podemos agregar varias filas en diferentes tablas con la misma instrucción de inserción

Sintaxis para una tabla

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;

Sintaxis para varias tablas

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;

Esto es equivalente a

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 )

Ejemplos

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;

insertar todas las declaraciones también se puede usar de la siguiente manera

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 ;

Es posible usar sentencias condicionales en insertar todas las sentencias

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 ;

Espero que les guste este contenido sobre la declaración de inserción en Oracle. He explicado varias formas en las que se pueden realizar inserciones en las tablas con amplios ejemplos.

Artículos relacionados

Declaración de actualización en Oracle:usamos la declaración de actualización en Oracle para modificar las filas existentes en la tabla de Oracle en la base de datos de Oracle. La actualización se puede ejecutar de varias maneras
Eliminar de la declaración de tabla en Oracle:Eliminar de la tabla en Oracle se usa para eliminar las filas. Las filas ELIMINAR se pueden hacer usando la cláusula EXISTS/NOT EXISTS, tabla basada en una subconsulta, cascada de la columna de la tabla, cambie los parámetros de almacenamiento de la tabla. También se proporcionan detalles sobre la función de adición rápida de columnas introducida en Oracle 11g
Documentación de Oracle en la inserción