數據庫批量插入、修改與刪除數據的使用

一、批量插入
最近因爲老是聽到批量插入這個詞,所以上網搜了下它的概念。原來以爲批量插入是直接一個循環將所有數據全部插入就是批量插入,但是查了度娘發現並不是這麼回事!!
比如說之前我們添加三條數據都是這樣子的:

INSERT INTO S_CARD(ID,CARD_NUMBER) VALUES (1,'100') 
INSERT INTO S_CARD(ID,CARD_NUMBER) VALUES (2,'100') 
INSERT INTO S_CARD(ID,CARD_NUMBER) VALUES (3,'100') 

如上所示,插入三條數據,實際上我們執行了三條sql語句。沒錯,你應該猜到了,批量插入就是不用三條sql,而是用一條sql語句實現三條數據的插入,如下所示:

INSERT ALL 
INTO S_CARD(ID,CARD_NUMBER) VALUES (1,'100') 
INTO S_CARD(ID,CARD_NUMBER) VALUES (2,'100') 
INTO S_CARD(ID,CARD_NUMBER) VALUES (3,'100')
SELECT 1 FROM DUAL;         

除了這種插入方法,還有以下幾種批量插入的方法

insert into S_CARD(ID,CARD_NUMBER) 
select '1','100' from dual         
union all                                 
select '2','100' from dual         
union all                                 
select '3','100' from dual  
insert into S_CARD(ID,CARD_NUMBER) 
select va1,va2 from(
select '1' va1,'100' va2 from dual         
union all                                 
select '2' va1,'100' va2 from dual         
union all                                 
select '3' va1,'100' va2 from dual   
) 

二、 批量修改
既然有批量插入,那麼是否就有批量修改呢???hehehe。。。一查還真有。

update S_TEST set 
name=case id 
  when '1' then '小白'
  when '2' then '小稍'
  when '3' then '小手'
END,
age = CASE id
  when '1' then 1
  when '2' then 2
  when '3' then 3
END
WHERE id IN ('1','2','3')

三、 刪除數據
查閱資料,發現刪除數據大概有以下三種關鍵字,分別是delete、drop以及truncate。那麼他們又有什麼區別呢?

  1. delete
    delete是平時我們比較常用的關鍵字。它跟事務掛鉤,刪除數據後只有事務提交纔可以結束,也可以回滾事務恢復數據。它的效率是最慢的。
  2. truncate
    這個關鍵字我們不常用。因爲truncate刪除就是直接刪除,沒有回滾操作,所以它的效率比delete高。一般是刪除確定不需要的垃圾數據。
  3. drop
    drop效率最高,因爲他是直接清除表空間。

總的來說,還是delete順手。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章