Oracle
 sql >> база данни >  >> RDS >> Oracle

Инструкция INSERT в Oracle

Инструкцията INSERT в oracle е команда DML (език за манипулиране на данни). Използва се за вмъкване на нови редове в таблиците на Oracle в базата данни на Oracle

Syntax

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

Тук
име_на_таблица :Таблица, където трябва да се вмъкнат нови записи
col1,col2 :е колоната в таблиците
стойност1,стойност2…. :са стойностите, съответстващи на col1,col2 …в таблицата

Само един ред е вмъкнат с този синтаксис в таблицата

Да предположим, че искате да въведете записи в таблицата EMP, след това

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

Важна забележка

  • Не е необходимо да давате имена на колони, в случай че посочвате стойностите в правилния ред и е предоставена стойност за всяка колона в таблицата
  • Препоръчително е да поставите единични кавички около стойностите на знаците.

Как да вмъкна нулеви стойности в таблица

В случай, че поставяме нулеви стойности за няколкото колони, можем да пропуснем колоните в командата за вмъкване

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

Вмъкване с помощта на оператор Select

Можем да вмъкнем и в таблицата, като използваме оператор select

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

Този метод може да се използва за вмъкване в няколко реда

  • Не е необходимо да използваме клауза за стойности тук
  • Трябва да съпоставим колоната във вмъкването със заявката за избор, за да работи
  • Не е необходимо да давате имена на колони, в случай че посочвате стойностите в правилния ред и е предоставена стойност за всяка колона в таблицата
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;


 

Вмъкване на функция за дата в таблицата

Да предположим, че имаме колона с тип данни за оракул дата в таблицата, тогава можем да използваме функцията sysdate, за да въведете датата в инструкцията за вмъкване

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

Или ако трябва да посочим конкретната дата, можем да използваме стандартния формат за датата „ДД-ПОН-ГГГГ“. С този час по подразбиране е полунощ

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

или ако трябва да въведем данни в различен формат с известно време, можем да използваме функцията 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 вмъкване на всички изрази

Oracle insert all statement ни помага да добавим няколко реда в таблицата наведнъж или можем да добавим  няколко реда в различни таблици със същия израз за вмъкване

Синтаксис за една таблица

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;

Синтаксис за множество таблици

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;

Това е еквивалентно на

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 )

Примери

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;

вмъкване на всички изрази също може да се използва по следния начин

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 ;

Възможно е да се използват условни изрази във вмъкване на всички изрази

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 ;

Надявам се да ви хареса това съдържание на изявлението за вмъкване в oracle. Обясних различни начини, по които вмъкванията могат да се изпълняват в таблиците с достатъчно примери.

Сродни статии

Изявление за актуализиране в oracle:Ние използваме изявлението Update в oracle, за да модифицираме съществуващите редове в таблицата на oracle в базата данни на oracle. Актуализацията може да се изпълни по няколко начина
Изтриване от таблицата в Oracle:Изтриване от таблицата в Oracle се използва за изтриване на редовете. DELETE  редове може да се направи с помощта на клауза EXISTS/NOT EXISTS, таблица, базирана на подзаявка, каскада
Как да променяте таблицата в Oracle:Промяната на таблицата в oracle се използва за промяна на колона, пускане и добавяне на ограничения, промяна на типа данни от колоната на таблицата, променете параметрите за съхранение на таблицата
Как да промените оракул за добавяне на колона в таблицата:Полезна информация за това как да промените оракул за добавяне на таблица в колона. Подробности за функцията за колона за бързо добавяне, въведена в oracle 11g, също са дадени
Документация на Oracle за вмъкване


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция NANVL() в Oracle

  2. Как да украсите изхода, идващ от заявката SELECT в командния ред?

  3. sqlplus изявление от командния ред

  4. Има ли Oracle, еквивалентен на ИЗХОДНИЯТ ИЗХОД на SQL Server INSERTED.*?

  5. Възможно ли е да се убие една заявка в oracle, без да се убива сесията?