ORACLE 批量插入(Insert)詳解


Oracle批量插入語句與其他數據庫不同,下面列出不同業務需求的插入

假設有一張表Student

-- 學生表
create
table Student( id Varchar2(11) primary key, name varchar2(32) not null, sex varchar2(3) not null, age smallint, tel varchar(16) )

其中[]中代表可選;<>代表必須;table_column的數量必須和column_value一致,並且數據類型要相匹配

1. 單條自定義記錄插入

  命令格式:

insert into table <tableName>[(<table_column1>,<table_column2>...)] values([<column_value1>,<column_value2>...])

  示例:insertinto Student(id, name, sex, age, tel) values ('13', 'jack', '', 13, '13345674567')

2.多條自定義記錄插入

  命令格式1:

insert all
    into <tableName>[(<table_column1>,<table_column2>...)] values([<column_value1>,<column_value2>...]) 
[ into <tableName>[(<table_column1>,<table_column2>...)] values([<column_value1>,<column_value2>...])]...
select  <table_value1>[,<table_value2>...] from dual;

  示例:

insert all into Student(id, name, sex, age, tel)
    into Student(id, name, sex, age, tel) values ('12', 'jack1', '', 12, '13345674567' )
    into Student(id, name, sex, age, tel) values ('13', 'jack2', '', 13, '13345674567')
    select '14', 'jack', '', 13, '13345674567' from dual;

   Note: 我也不知道為什么要加select  <values> from dual語句,反正不加就報錯

  命令格式2:

 insert into <tableName>[(<table_column1>,<table_column2>...)] 
 select [<column_value1>,<column_value2>...] from dual
   [ union select [<column_value1>,<column_value2>...] from dual ]...

  示例:

insert into Student(id, name, sex, age, tel)
select '24', 'jack', '', 22, '13345674567' from dual
  union select '25', 'jack', '', 22, '13345674567' from dual
  union select '26', 'jack', '', 32, '13345674567' from dual

 3. 數據庫記錄插入

  命令格式:

 insert into <tableName1>[(<table_column1>,<table_column2>...)] 
   select [<column_value1>,<column_value2>...] from <tableName2> [where [...]]
   union [ select [<column_value1>,<column_value2>...] from <tableName2> [where [...] ]]

  示例:

insert into student(id, name, sex, age, tel)
  select (id-1)||'' as id, name, sex, age, tel from Student where id='11'
  union select id||'1' as id, name, sex, age, tel from Student where id like '1%'
  union select id||'2' as id, name, sex, age, tel from Student where id like '%1' and id/3 != 0

Note:不推薦插入語句不寫名字段,比如

insert into student select * from student2; 
      into Student values ('12', 'jack', '', 12, '13345674567' )  

 

  這樣的語句是不推薦的  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM