sql >> Database teknologi >  >> RDS >> Oracle

INSERT-sætning i Oracle

INSERT-sætning i oracle er en DML-kommando (Data Manipulation Language). Det bruges til at indsætte nye rækker i oracle-tabellerne i oracle-databasen

Syntax

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

Her
tabelnavn :Tabel, hvor nye poster skal indsættes
col1,col2 :er kolonnen i tabellerne
værdi1,værdi2…. :er værdierne svarende til col1,col2 …i tabellen

Kun én række er indsat med denne syntaks i tabellen

Antag, at du vil indtaste poster i EMP-tabellen, så

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

Vigtig bemærkning

  • Det er ikke nødvendigt at give kolonnenavne, hvis du angiver værdierne i den korrekte rækkefølge, og værdien for hver kolonne i tabellen er angivet
  • Det anbefales at sætte enkelte anførselstegn omkring tegnværdier.

Sådan indsætter du Null-værdier i tabellen

Hvis vi sætter null-værdier for de få kolonner, kan vi udelade kolonnerne i insert-kommandoen

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

Indsæt ved hjælp af Select-sætning

Vi kan også indsætte i tabellen ved hjælp af select statement

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

Denne metode kan bruges til at indsætte i flere rækker

  • Vi behøver ikke bruge værdisætning her
  • Vi er nødt til at matche kolonnen i indsættet med udvalgsforespørgslen for at få det til at fungere
  • Det er ikke nødvendigt at give kolonnenavne, hvis du angiver værdierne i den korrekte rækkefølge, og værdien for hver kolonne i tabellen er angivet
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;


 

Indsæt datofunktion i tabellen

Antag, at vi har en oracle-dato-datatypekolonne i tabellen, så kan vi bruge sysdate-funktionen til at indtaste datoen i insert-sætningen

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 hvis vi har brug for at angive den specifikke dato, kan vi bruge standardformatet for datoen "DD-MAN-ÅÅÅÅ". Med denne tid er standard midnat

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

eller hvis vi skal indtaste data i et andet format med nogen tid, kan vi bruge 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 indsæt alle sætninger

Oracle insert all-sætning hjælper os med at tilføje flere rækker i tabellen på én gang, eller vi kan tilføje  flere rækker i forskellige tabeller med den samme insert-sætning

Syntaks for én tabel

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;

Syntaks for flere 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;

Dette svarer til

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 )

Eksempler

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;

indsæt alle udsagn kan også bruges på nedenstående måde

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 er muligt at bruge betingede udsagn i insert all statement

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 ;

Jeg håber, du kan lide dette indhold på indsættelseserklæringen i oracle. Jeg har forklaret forskellige måder, hvorpå inserts kan udføres i tabellerne med mange eksempler.

Relaterede artikler

Opdater sætning i oracle:Vi bruger opdateringssætning i oracle til at ændre de eksisterende rækker i oracle-tabellen i oracle-databasen. Opdatering kan udføres på flere måder
Slet fra tabelsætning i Oracle:Slet fra tabellen i Oracle bruges til at slette rækkerne. SLET  rækker kan udføres ved hjælp af EXISTS/NOT EXISTS-klausulen , tabel baseret på en underforespørgsel, kaskade
Sådan ændres tabel i Oracle :Ændre tabel i Oracle bruges til at ændre en kolonne, slippe og tilføje begrænsninger, ændre datatypen i tabelkolonnen, skal du ændre tabellagringsparametrene
Sådan ændres tabel tilføje kolonne orakel:Nyttig indsigt i Hvordan ændre tabel tilføje kolonne orakel. Detaljer om funktionen til hurtig tilføjelse af kolonne introduceret i Oracle 11g gives også
Oracle-dokumentation på indsæt


  1. Automatisering af indeksdefragmentering i MS SQL Server-database

  2. SQL DELETE med JOIN en anden tabel for WHERE-tilstand

  3. Køre Stored Procedure i SQL Developer?

  4. sqldeveloper fejlmeddelelse:Netværksadapteren kunne ikke etablere forbindelsesfejlen