sql >> Databáze >  >> RDS >> Oracle

Příkaz INSERT v Oracle

Příkaz INSERT v oracle je příkaz DML (Data Manipulation Language). Slouží k vkládání nových řádků do tabulek oracle v databázi oracle

Syntax

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

Zde
název_tabulky :Tabulka, do které je třeba vložit nové záznamy
col1,col2 :je sloupec v tabulkách
hodnota1,hodnota2…. :jsou hodnoty odpovídající col1,col2 …v tabulce

Do tabulky je vložen pouze jeden řádek s touto syntaxí

Předpokládejme, že chcete vložit záznamy do tabulky EMP, pak

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

Důležitá poznámka

  • Není nutné uvádět názvy sloupců v případě, že zadáváte hodnoty ve správném pořadí a je uvedena hodnota pro každý sloupec v tabulce
  • Doporučuje se dávat hodnoty znaků do jednoduchých uvozovek.

Jak vložit hodnoty Null do tabulky

V případě, že do několika sloupců vkládáme hodnoty null, můžeme sloupce v příkazu insert vynechat

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

Vložit pomocí příkazu Select

Do tabulky můžeme vkládat také příkazem select

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

Tuto metodu lze použít pro vkládání do více řádků

  • Tady nemusíme používat klauzuli hodnot
  • Aby to fungovalo, potřebujeme přiřadit sloupec v insertu k výběrovému dotazu
  • Není nutné uvádět názvy sloupců v případě, že zadáváte hodnoty ve správném pořadí a je uvedena hodnota pro každý sloupec v tabulce
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;


 

Vložit funkci data do tabulky

Předpokládejme, že máme v tabulce sloupec datového typu datatype Oracle, pak můžeme použít funkci sysdate k zadání data do příkazu 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);

Nebo pokud potřebujeme specifikovat konkrétní datum, můžeme použít standardní formát pro datum „DD-MON-YYYY“. S tímto výchozím časem je půlnoc

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

nebo pokud potřebujeme s časem zadat data v jiném formátu, můžeme použít funkci 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 insert all statement

Příkaz Oracle insert all nám pomáhá přidat více řádků do tabulky najednou, nebo můžeme přidat více řádků v různých tabulkách pomocí stejného příkazu insert

Syntaxe pro jednu tabulku

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 pro více tabulek

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;

To je ekvivalentní s

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 )

Příklady

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 statement lze také použít níže uvedeným způsobem

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 ;

V příkazu insert all

je možné použít podmíněné příkazy
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 ;

Doufám, že se vám tento obsah na příkazu insert v oracle líbí. Vysvětlil jsem různé způsoby, kterými lze v tabulkách provádět vkládání, na bohatých příkladech.

Související články

Příkaz Update v oracle:Příkaz Update v oracle používáme k úpravě existujících řádků v tabulce oracle v databázi oracle. Aktualizaci lze provést několika způsoby
Příkaz Delete from table v Oracle:Delete from the table v oracle se používá k odstranění řádků. DELETE  řádky lze provést pomocí klauzule EXISTS/NOT EXISTS , tabulka založená na dílčím dotazu, kaskáda
Jak změnit tabulku v Oracle :Změna tabulky v oracle se používá k úpravě sloupce, zrušení a přidání omezení, změně datového typu sloupce tabulky, změňte parametry úložiště tabulky
Jak změnit tabulku přidání sloupce oracle:Užitečný náhled na Jak změnit tabulku přidání sloupce Oracle. Podrobnosti o funkci rychlého přidání sloupce představené v oracle 11g jsou také uvedeny
Dokumentace Oracle k vložce


  1. Průvodce návrhem databáze pro systém objednávek restaurací v MySQL

  2. Jak vytvořit Serverless GraphQL API pro MySQL, Postgres a Aurora

  3. Jak naformátuji číslo s čárkami v T-SQL?

  4. Proč a kdy bych měl používat ŘÍDKÝ SLOUPEC? (SQL SERVER 2008)