最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SQL中drop、delete和truncate的異同

 更新時(shí)間:2015年12月11日 15:45:10   作者:我愛PHP  
這篇文章主要介紹了SQL中drop、delete和truncate的異同,尤其針對不同點(diǎn)進(jìn)行闡述,感興趣的小伙伴們可以參考一下

第一:相同點(diǎn):

 truncate和不帶where子句的delete,以及drop 都會刪除表內(nèi)的數(shù)據(jù)

第二:不同點(diǎn):

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

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

3.delete 語句不影響表所占用的extent,高水線(high watermark)保持原位置不動;
   顯然drop 語句將表所占用的空間全部釋放;   truncate 語句缺省情況下見空間釋放到 minextents個(gè) extent,除非使用reuse storage;truncate 會將高水線復(fù)位(回到最開始)。

4.速度:一般來說: drop> truncate > delete

5.安全性:小心使用 drop 和 truncate,尤其沒有備份的時(shí)候.,否則哭都來不及。       

6.使用上:想刪除部分?jǐn)?shù)據(jù)行用delete,注意帶上where子句. 回滾段要足夠大。

                 想刪除表,當(dāng)然用drop。
                 想保留表而將所有數(shù)據(jù)刪除,如果和事務(wù)無關(guān),用truncate即可;如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete。
                 如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)。

文章很簡短,不知道大家有沒有對drop、delete和truncate的異同有所區(qū)分?

再為大家分享一些詳細(xì)內(nèi)容:

(1)DELETE語句執(zhí)行刪除的過程是每次從表中刪除一行,并且同時(shí)將該行的刪除操作作為事務(wù)記錄在日志中保存以便進(jìn)行進(jìn)行回滾操作。TRUNCATE TABLE 則一次性地從表中刪除所有的數(shù)據(jù)并不把單獨(dú)的刪除操作記錄記入日志保存,刪除行是不能恢復(fù)的。并且在刪除的過程中不會激活與表有關(guān)的刪除觸發(fā)器。執(zhí)行速度快。

(2)表和索引所占空間。當(dāng)表被TRUNCATE 后,這個(gè)表和索引所占用的空間會恢復(fù)到初始大小,而DELETE操作不會減少表或索引所占用的空間。drop語句將表所占用的空間全釋放掉。

(3)一般而言,drop > truncate > delete

(4)應(yīng)用范圍。TRUNCATE 只能對TABLE;DELETE可以是table和view

(5)TRUNCATE 和DELETE只刪除數(shù)據(jù),而DROP則刪除整個(gè)表(結(jié)構(gòu)和數(shù)據(jù))。

(6)truncate與不帶where的delete :只刪除數(shù)據(jù),而不刪除表的結(jié)構(gòu)(定義)drop語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger)索引(index);依賴于該表的存儲過程/函數(shù)將被保留,但其狀態(tài)會變?yōu)椋篿nvalid。

(7)delete語句為DML(data maintain Language),這個(gè)操作會被放到rollback segment中,事務(wù)提交后才生效。如果有相應(yīng)的 tigger,執(zhí)行的時(shí)候?qū)⒈挥|發(fā)。

(8)truncate、drop是DLL(data define language),操作立即生效,原數(shù)據(jù)不放到 rollback segment中,不能回滾

(9)在沒有備份情況下,謹(jǐn)慎使用 drop 與 truncate。要?jiǎng)h除部分?jǐn)?shù)據(jù)行采用delete且注意結(jié)合where來約束影響范圍?;貪L段要足夠大。要?jiǎng)h除表用drop;若想保留表而將表中數(shù)據(jù)刪除,如果于事務(wù)無關(guān),用truncate即可實(shí)現(xiàn)。如果和事務(wù)有關(guān),或老師想觸發(fā)trigger,還是用delete。

(10)Truncate table 表名 速度快,而且效率高,因?yàn)椋?br /> truncate table 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。DELETE 語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。TRUNCATE TABLE 通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • sqlserverdriver配置方法 jdbc連接sqlserver

    sqlserverdriver配置方法 jdbc連接sqlserver

    這篇文章主要介紹了sqlserverdriver配置方法,介紹了連接SqlServer2000 和連接SqlServer2005的方法,大家參考使用吧
    2014-01-01
  • SQL?Server數(shù)據(jù)庫生成與執(zhí)行SQL腳本詳細(xì)教程

    SQL?Server數(shù)據(jù)庫生成與執(zhí)行SQL腳本詳細(xì)教程

    為了方便可以把需要連續(xù)執(zhí)行的SQL語句寫到一個(gè)文本文件中,并且用.SQL作為擴(kuò)展名,這種文件叫做SQL腳本文件,下面這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫生成與執(zhí)行SQL腳本的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • SQL?SERVER自動備份以及自動清除設(shè)置圖文教程

    SQL?SERVER自動備份以及自動清除設(shè)置圖文教程

    作為一名DBA、運(yùn)維人員、實(shí)施人員亦或是測試人員必須要學(xué)會如何備份以及清理備份文件,自動清理備份文件,這篇文章主要給大家介紹了關(guān)于SQL?SERVER自動備份以及自動清除設(shè)置的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • SQL Server三種鎖定模式的知識講解

    SQL Server三種鎖定模式的知識講解

    今天小編就為大家分享一篇關(guān)于SQL Server三種鎖定模式的知識講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SQL SERVER 開啟CDC 實(shí)操詳細(xì)

    SQL SERVER 開啟CDC 實(shí)操詳細(xì)

    這篇文章主要個(gè)代價(jià)介紹SQL SERVER CDC開啟實(shí)操詳細(xì)內(nèi)容,文明芝麻官內(nèi)容有詳細(xì)代碼及解說,需要的小伙伴可以參考一下
    2021-10-10
  • 通過SQLSERVER重啟SQLSERVER服務(wù)和計(jì)算機(jī)的方法

    通過SQLSERVER重啟SQLSERVER服務(wù)和計(jì)算機(jī)的方法

    為了實(shí)現(xiàn)遠(yuǎn)程重新啟動,從而想到了用SQL語句命令實(shí)現(xiàn)這個(gè)功能,但是具體的命令格式給忘記了,找了點(diǎn)資料,把方法寫在下面
    2010-09-09
  • SQLServer設(shè)置客戶端使用IP地址登錄的圖文詳解

    SQLServer設(shè)置客戶端使用IP地址登錄的圖文詳解

    這篇文章主要介紹了SQLServer設(shè)置客戶端使用IP地址登錄的圖文詳解,本文通過圖文并茂的形式給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • SQLServer中merge函數(shù)用法詳解

    SQLServer中merge函數(shù)用法詳解

    Merge關(guān)鍵字是一個(gè)神奇的DML關(guān)鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Delete簡單的并為一句。通過本篇文章給大家介紹sqlserver中merge函數(shù)用法詳解,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • sqlserver對字段的添加修改刪除、以及字段的說明

    sqlserver對字段的添加修改刪除、以及字段的說明

    sqlserver對字段的添加修改刪除、以及字段的說明,需要的朋友可以參考下。
    2011-12-12
  • SQL Server中Check約束的學(xué)習(xí)教程

    SQL Server中Check約束的學(xué)習(xí)教程

    這篇文章主要介紹了SQL Server中Check約束的學(xué)習(xí)教程,包括對啟用Check約束來提升性能的介紹,需要的朋友可以參考下
    2015-12-12

最新評論

公安县| 黄浦区| 涞水县| 延津县| 樟树市| 太湖县| 石首市| 蓬溪县| 沁阳市| 闸北区| 仙居县| 徐州市| 河南省| 都江堰市| 和龙市| 林芝县| 河北省| 太仓市| 梅河口市| 绥德县| 湖州市| 治县。| 周至县| 通辽市| 安远县| 常德市| 丹棱县| 腾冲县| 临沭县| 洛阳市| 林甸县| 封开县| 桂林市| 文昌市| 江陵县| 玉环县| 奇台县| 太白县| 长葛市| 通州市| 龙胜|