Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Instrukcja INSERT w Oracle

Instrukcja INSERT w Oracle to polecenie DML (język manipulacji danymi). Służy do wstawiania nowych wierszy do tabel Oracle w bazie danych Oracle

Syntax

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

Tu
nazwa_tabeli :tabela, w której należy wstawić nowe rekordy
col1,col2 :to kolumna w tabelach
wartość1,wartość2…. :są wartościami odpowiadającymi col1,col2 …w tabeli

W tabeli wstawiono tylko jeden wiersz o tej składni

Załóżmy, że chcesz wprowadzić rekordy w tabeli EMP, a następnie

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

Ważna uwaga

  • Nie jest konieczne podawanie nazw kolumn na wypadek, gdy podajesz wartości we właściwej kolejności, a wartość dla każdej kolumny w tabeli jest podana
  • Zaleca się umieszczanie pojedynczych cudzysłowów wokół wartości znaków.

Jak wstawić wartości Null do tabeli

Jeśli wstawiamy wartości null dla kilku kolumn, możemy pominąć kolumny w poleceniu wstawiania

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

Wstaw za pomocą instrukcji Select

Możemy wstawić do tabeli również za pomocą instrukcji select

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

Ta metoda może być używana do wstawiania do wielu wierszy

  • Nie musimy tutaj używać klauzuli wartości
  • Musimy dopasować kolumnę we wstawce do zapytania wybierającego, aby działało
  • Nie jest konieczne podawanie nazw kolumn na wypadek, gdy podajesz wartości we właściwej kolejności, a wartość dla każdej kolumny w tabeli jest podana
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;


 

Wstaw funkcję daty do tabeli

Załóżmy, że mamy w tabeli kolumnę typu danych oracle date, a następnie możemy użyć funkcji sysdate, aby wprowadzić datę w instrukcji 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);

Lub jeśli musimy określić konkretną datę, możemy użyć standardowego formatu daty „DD-PON-RRRR”. Tym razem domyślnie jest północ

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

lub jeśli za jakiś czas musimy wprowadzić dane w innym formacie, możemy użyć funkcji 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 wstaw wszystkie oświadczenie

Instrukcja Oracle INSERT ALL pomaga nam dodać wiele wierszy w tabeli za jednym razem lub możemy dodać wiele wierszy w różnych tabelach za pomocą tej samej instrukcji INSERT

Składnia dla jednej tabeli

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;

Składnia dla wielu tabel

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;

Jest to odpowiednik

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 )

Przykłady

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;

wstaw wszystkie wyrażenia mogą być również użyte w następujący sposób

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 ;

Możliwe jest użycie instrukcji warunkowych w instrukcji 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 ;

Mam nadzieję, że podoba Ci się ta treść w instrukcji insert w Oracle. Wyjaśniłem różne sposoby wstawiania w tabelach na wielu przykładach.

Powiązane artykuły

Oświadczenie Update w Oracle:Używamy instrukcji Update w Oracle, aby zmodyfikować istniejące wiersze w tabeli Oracle w bazie danych Oracle. Aktualizację można wykonać na wiele sposobów
Delete from table statement in Oracle:Delete from the table in oracle służy do usuwania wierszy. DELETE wiersze można wykonać za pomocą klauzuli EXISTS/NOT EXISTS , tabeli opartej na podzapytaniu, kaskadowo
Jak zmienić tabelę w Oracle:Zmiana tabeli w Oracle służy do modyfikowania kolumny, upuszczania i dodawania ograniczeń, zmiany typu danych kolumny tabeli, zmień parametry przechowywania tabeli
Jak zmienić wyrocznię dodawania kolumn do tabeli:Przydatny wgląd w Jak zmienić wyrocznię dodawania kolumn do tabeli. Szczegóły dotyczące funkcji szybkiego dodawania kolumn wprowadzonej w Oracle 11g są również podane
Dokumentacja Oracle dotycząca wstawiania


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oblicz godziny na podstawie godzin pracy w Oracle SQL

  2. Wyjaśnienie operatora Oracle UNION

  3. Funkcja JSON_OBJECT() w Oracle

  4. Czy możliwe jest zapytanie kolumny oddzielonej przecinkami dla określonej wartości?

  5. Jaka jest różnica między varchar a varchar2 w Oracle?