
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
SyntaxINSERT 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