五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > runcate sql用法 runcate語句實(shí)例和delete的區(qū)別

runcate sql用法 runcate語句實(shí)例和delete的區(qū)別

文章來源:365jz.com     點(diǎn)擊數(shù):1242    更新時(shí)間:2018-09-20 08:28   參與評(píng)論

使用TRUNCATE TABLE語句

TRUNCATE TABLE語句提供了一種刪除表中所有記錄的快速方法。因?yàn)門RUNCATE TABLE語句不記錄日志,只記錄整個(gè)數(shù)據(jù)頁的釋放操作,而DELETE語句對(duì)每一行修改都記錄日志,所以使用TRUNCATE TABLE語句進(jìn)行刪除操作總是比沒有指定條件的DELETE語句效率高。TRUNCATE TABLE立即釋放了表中數(shù)據(jù)及索引所占用的全部空間,同時(shí)也釋放了分配給所有索引的空間。其語法格式如下:

TRUNCATE TABLE [ [database.] owner.] table_name

刪除表中的數(shù)據(jù)的方法有delete,truncate, TRUNCATE TABLE 與沒有 WHERE 子句的 DELETE 語句類似;但是,TRUNCATE TABLE 速度更快。

下面介紹SQL中Truncate的用法

 

當(dāng)你不再需要該表時(shí), 用 drop;當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;當(dāng)你要?jiǎng)h除部分記錄時(shí)(always with a WHERE clause), 用 delete.

 

Truncate是一個(gè)能夠快速清空資料表內(nèi)所有資料的SQL語法。并且能針對(duì)具有自動(dòng)遞增值的字段,做計(jì)數(shù)重置歸零重新計(jì)算的作用。

 

一、Truncate語法


[ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ]
 

參數(shù)


database_name
數(shù)據(jù)庫的名稱。


schema_name
表所屬架構(gòu)的名稱。


table_name
要截?cái)嗟谋淼拿Q,或要?jiǎng)h除其全部行的表的名稱。

 

二、Truncate使用注意事項(xiàng)

 

1、TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。

 

2、DELETE 語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。TRUNCATE TABLE 通過釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。

 

3、TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。新行標(biāo)識(shí)所用的計(jì)數(shù)值重置為該列的種子。如果想保留標(biāo)識(shí)計(jì)數(shù)值,請(qǐng)改用 DELETE。如果要?jiǎng)h除表定義及其數(shù)據(jù),請(qǐng)使用 DROP TABLE 語句。

 

4、對(duì)于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。

 

5、TRUNCATE TABLE 不能用于參與了索引視圖的表。

 

6、對(duì)用TRUNCATE TABLE刪除數(shù)據(jù)的表上增加數(shù)據(jù)時(shí),要使用UPDATE STATISTICS來維護(hù)索引信息。

 

7、如果有ROLLBACK語句,DELETE操作將被撤銷,但TRUNCATE不會(huì)撤銷。

 

 

 

三、不能對(duì)以下表使用 TRUNCATE TABLE

 


1、由 FOREIGN KEY 約束引用的表。(您可以截?cái)嗑哂幸米陨淼耐怄I的表。)


2、參與索引視圖的表。


3、通過使用事務(wù)復(fù)制或合并復(fù)制發(fā)布的表。


4、對(duì)于具有以上一個(gè)或多個(gè)特征的表,請(qǐng)使用 DELETE 語句。


5、TRUNCATE TABLE 不能激活觸發(fā)器,因?yàn)樵摬僮鞑挥涗浉鱾€(gè)行刪除。

 

可以做一個(gè)測(cè)試 

建一個(gè)帶有自增字段的表,加入100萬數(shù)據(jù) 
然后分別用TRUNCATE和DELETE刪除全部數(shù)據(jù) 
然后再向表里插入一條數(shù)據(jù) 

最直觀是: 
1.TRUNCATE TABLE是非??斓?nbsp;
2.TRUNCATE之后的自增字段從頭開始計(jì)數(shù)了,而DELETE的仍保留原來的最大數(shù)值 

……………………………………………………………………………………………… 
注意:這里說的delete是指不帶where子句的delete語句 
相同點(diǎn) 
truncate和不帶where子句的delete, 以及drop都會(huì)刪除表內(nèi)的數(shù)據(jù)  

 

四、TRUNCATE、Drop、Delete區(qū)別

 

 
1.drop和delete只是刪除表的數(shù)據(jù)(定義),drop語句將刪除表的結(jié)構(gòu)、被依賴的約束(constrain)、觸發(fā)器 (trigger)、索引(index);依賴于該表的存儲(chǔ)過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。

2.delete語句是DML語言,這個(gè)操作會(huì)放在rollback segement中,事物提交后才生效;如果有相應(yīng)的觸發(fā)器(trigger),執(zhí)行的時(shí)候?qū)⒈挥|發(fā)。truncate、drop是DDL語言,操作后即 生效,原數(shù)據(jù)不會(huì)放到rollback中,不能回滾,操作不會(huì)觸發(fā)trigger。

3.delete語句不影響表所占用的extent、高水線(high watermark)保持原位置不動(dòng)。drop語句將表所占用的空間全部釋放。truncate語句缺省情況下將空間釋放到minextents的 extent,除非使用reuse storage。truncate會(huì)將高水線復(fù)位(回到最初)。

4.效率方面:drop > truncate > delete

5.安全性:小心使用drop與truncate,尤其是在 沒有備份的時(shí)候,想刪除部分?jǐn)?shù)據(jù)可使用delete需要帶上where子句,回滾段要足夠大,想刪除表可以用drop,想保留表只是想刪除表的所有數(shù)據(jù)、 如果跟事物無關(guān)可以使用truncate,如果和事物有關(guān)、又或者想觸發(fā) trigger,還是用delete,如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入、插入數(shù)據(jù)。

6.delete是DML語句,不會(huì)自動(dòng)提交。drop/truncate都是DDL語句,執(zhí)行后會(huì)自動(dòng)提交。

7、drop一般用于刪除整體性數(shù)據(jù) 如表,模式,索引,視圖,完整性限制等;delete用于刪除局部性數(shù)據(jù) 如表中的某一元組

8、DROP把表結(jié)構(gòu)都刪了;DELETE只是把數(shù)據(jù)清掉

9、當(dāng)你不再需要該表時(shí), 用 drop;當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;當(dāng)你要?jiǎng)h除部分記錄時(shí)(always with a WHERE clause), 用 delete.


如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1242人查看0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)