Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Instrução INSERT no Oracle


A instrução INSERT no oracle é um comando DML (Data Manipulation Language). É usado para inserir novas linhas nas tabelas oracle no banco de dados oracle
Syntax

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


Aqui
nome_tabela :Tabela onde novos registros precisam ser inseridos
col1,col2 :é a coluna nas tabelas
valor1,valor2…. :são os valores correspondentes a col1,col2 …na tabela

Apenas uma linha é inserida com esta sintaxe na tabela

Suponha que você queira inserir registros na tabela EMP, então
insert into emp (emp_id, emp_name,dept_id,first_name,last_name,salary)
values ('101','JOHN', 10,'JOHN' ,'ROGER', 3000);

Observação importante
  • Não é necessário fornecer nomes de coluna caso você esteja especificando os valores na ordem correta e o valor de cada coluna na tabela é fornecido
  • Recomenda-se colocar aspas simples nos valores dos caracteres.

Como inserir valores nulos na tabela


Caso estejamos colocando valores nulos para as poucas colunas, podemos omitir as colunas no comando insert
insert into emp (emp_id, emp_name,dept_id,salary)
values ('101','JOHN', 10, 3000);

Inserir usando a instrução Select


Podemos inserir na tabela usando a instrução select também
INSERT INTO <table_name>
(col1, col2, ... column_n ) select col1, col2, ... column_n from < table_name2>

Este método pode ser usado para inserir em várias linhas
  • Não precisamos usar a cláusula de valores aqui
  • Precisamos corresponder a coluna na inserção à consulta selecionada para que funcione
  • Não é necessário fornecer nomes de coluna caso você esteja especificando os valores na ordem correta e o valor de cada coluna na tabela é fornecido
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;


 

Inserir função de data na tabela


Suponha que tenhamos uma coluna de tipo de dados oracle date na tabela, então podemos usar a função sysdate para inserir a data na instrução insert
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 se precisarmos especificar a data específica, podemos usar o formato padrão para a data 'DD-MON-AAAA'. Com esse padrão de tempo para meia-noite
insert into emp (emp_id,emp_name,salary,hire_date) values 
( '10','JOHN',1000, '18-AUG-2018');

ou se precisarmos inserir dados em um formato diferente com algum tempo, podemos usar a função 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 insere todas as instruções


A instrução insert all da Oracle nos ajuda a adicionar várias linhas na tabela de uma só vez ou podemos adicionar várias linhas em tabelas diferentes com a mesma instrução insert

Sintaxe para uma tabela

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;


Sintaxe para várias tabelas

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;


Isso é 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 )

Exemplos

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;


inserir todas as instruções também pode ser usado da maneira abaixo
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 ;

É possível usar instruções condicionais na instrução insert all
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 gostem deste conteúdo sobre a instrução insert no oracle. Expliquei várias maneiras pelas quais as inserções podem ser executadas nas tabelas com amplos exemplos.

Artigos relacionados

Instrução de atualização no oracle:Usamos a instrução de atualização no oracle para modificar as linhas existentes na tabela oracle no banco de dados oracle. A atualização pode ser executada de várias maneiras
Delete from table instrução no Oracle:Delete from the table no oracle é usado para excluir as linhas. DELETE  linhas podem ser feitas usando a cláusula EXISTS/NOT EXISTS, tabela baseada em uma subconsulta, cascata
Como alterar a tabela no Oracle:Alter tabela no oracle é usada para modificar uma coluna, descartar e adicionar restrições, alterar o tipo de dados da coluna da tabela, altere os parâmetros de armazenamento da tabela
Como alterar a tabela adicionar o oráculo da coluna:informações úteis sobre como alterar a tabela adicionar o oráculo da coluna. Detalhes sobre o recurso de adição rápida de colunas introduzido no oracle 11g também fornecido
documentação da Oracle na inserção