sql >> Databasteknik >  >> RDS >> Oracle

INSERT-sats i Oracle

INSERT-satsen i oracle är ett DML-kommando (Data Manipulation Language). Den används för att infoga nya rader i Oracle-tabellerna i Oracle-databasen

Syntax

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

Här
tabellnamn :Tabell där nya poster måste infogas
col1,col2 :är kolumnen i tabellerna
värde1,värde2…. :är värdena som motsvarar col1,col2 …i tabellen

Endast en rad infogas med denna syntax i tabellen

Anta att du vill ange poster i EMP-tabellen, då

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

Viktig anmärkning

  • Det är inte nödvändigt att ge kolumnnamn om du anger värdena i rätt ordning och värde för varje kolumn i tabellen tillhandahålls
  • Det rekommenderas att sätta enstaka citattecken runt teckenvärden.

Hur man infogar nollvärden i tabellen

Om vi ​​sätter nollvärden för de få kolumnerna kan vi utelämna kolumnerna i kommandot infoga

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

Infoga med Select-satsen

Vi kan infoga i tabellen med select-satsen också

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

Denna metod kan användas för att infoga i flera rader

  • Vi behöver inte använda värdesats här
  • Vi måste matcha kolumnen i infogningen med urvalsfrågan för att få det att fungera
  • Det är inte nödvändigt att ge kolumnnamn om du anger värdena i rätt ordning och värde för varje kolumn i tabellen tillhandahålls
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;


Infoga datumfunktion i tabellen

Anta att vi har en kolumn för oracle date datatype i tabellen, då kan vi använda sysdate-funktionen för att ange datumet i insert-satsen

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

Eller om vi behöver ange det specifika datumet kan vi använda standardformatet för datumet "DD-MÅN-ÅÅÅÅ". Med denna tid som standard till midnatt

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

eller om vi behöver ange data i ett annat format med lite tid, kan vi använda to_date-funktionen

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 infoga alla uttalanden

Oracle insert all-sats hjälper oss att lägga till flera rader i tabellen på en gång , eller så kan vi lägga till  flera rader i olika tabeller med samma insert-sats

Syntax för en tabell

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;

Syntax för flera tabeller

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;

Detta motsvarar

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 )

Exempel

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;

infoga alla satser kan också användas på nedanstående sätt

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 ;

Det är möjligt att använda villkorliga satser i infoga alla satser

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 ;

Jag hoppas att du gillar det här innehållet på infoga uttalandet i oracle. Jag har förklarat olika sätt på vilka insättningar kan utföras i tabellerna med många exempel.

Relaterade artiklar

Uppdatera uttalande i oracle:Vi använder Update-satsen i oracle för att modifiera de befintliga raderna i oracle-tabellen i oracle-databasen. Uppdatering kan utföras på flera sätt
Ta bort från tabellsatsen i Oracle:Ta bort från tabellen i Oracle används för att ta bort raderna. DELETE  rader kan göras med hjälp av EXISTS/NOT EXISTS-satsen , tabell baserad på en underfråga, kaskad
Hur man ändrar tabell i Oracle :Ändra tabell i Oracle används för att ändra en kolumn, släppa och lägga till begränsningar, ändra datatypen i tabellkolumnen, ändra tabelllagringsparametrarna
Hur man ändrar tabell lägg till kolumn oracle:Användbar insikt i Hur man ändrar tabell lägg till kolumn oracle. Detaljer om funktionen snabbt lägga till kolumn som introducerades i Oracle 11g ges också
Oracle-dokumentation på infogning


  1. SqlDependency aktiverar inte OnChange-händelsen när datauppsättningen ändras

  2. `pg_tblspc` saknas efter installation av senaste versionen av OS X (Yosemite eller El Capitan)

  3. Hur visar man alla privilegier från en användare i Oracle?

  4. Hur ändrar man ägandet av alla objekt i ett visst schema i PostgreSQL?