INSERT ALL介紹

何謂INSERT ALL
  • 可以在多個表格新增資料,可以使用2種新增模式,第一種為一般新增,第二種為附加條件新增(在INSERT ALL加上WHEN子句)
一般新增格式
INSERT ALL
          INTO table_reference [(column [,column...])]
                    [VALUES ({expr | default} [,{expr | default}...])]
          INTO table_reference [(column [,column...])]
                    [VALUES ({expr | default} [,{expr | default}...])]
          (subquery); 
 table_reference:插入目標的表格名稱
 column:欄位名稱
 expr:資料來源表格的欄位名稱
 default:資料來源表格的欄位預設值
subquery:子查詢 
 
一般新增使用方式
  • SQL語法示範
新增employees表格資料到emp表格與emp2表格
insert all
     into emp(xid,name) values(emp_id,last_name)
     into emp2(xid,name) values(emp_id,last_name)
     select emp_id,last_name from employees;
新增employees表格資料到emp表格與emp2表格(使用別名的方式)
insert all
     into emp(xid,name) values(id+10,last_name)
     into emp2(xid,name) values(id+20,last_name)
     select emp_id as id,last_name from employees;
 附加條件新增(在INSERT ALL加上WHEN子句)格式
INSERT ALL
          WHEN condition THEN insert_into_clause [insert_into_clause...]
          [WHEN condition THEN insert_into_clause [insert_into_clause...]...]
          [ELSE insert_into_clause [insert_into_clause...]]
          (subquery);
condition:條件
insert_into_clause:格式和INSERT句INTO子句以後的部分相同
subquery:子查詢 
 附加條件新增使用方式
  • SQL語法示範
如果employees表格裡的emp_id小於101就新增資料到emp2表格,如果employees表格裡的emp_id小於102就新增資料到emp3表格
insert all
     when emp_id<101 then into emp2(xid,salary)
     when emp_id<102 then into emp3(xid,salary) 
 select  emp_id,salary from employees;
  • SQL語法示範(使用ELSE)
如果employees表格裡的emp_id小於101就新增資料到emp2表格,如果都不是就新增到emp3表格
 insert all
      when emp_id<101then into emp2(xid,salary)
      else into emp3(xid,salary)
 select  emp_id,salary from employees;