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

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

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

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

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

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

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

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

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

4.速度:一般來(lái)說(shuō): drop> truncate > delete

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

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

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

文章很簡(jiǎn)短,不知道大家有沒(méi)有對(duì)drop、delete和truncate的異同有所區(qū)分?

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

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

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

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

(4)應(yīng)用范圍。TRUNCATE 只能對(duì)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語(yǔ)句將刪除表的結(jié)構(gòu)被依賴(lài)的約束(constrain),觸發(fā)器(trigger)索引(index);依賴(lài)于該表的存儲(chǔ)過(guò)程/函數(shù)將被保留,但其狀態(tài)會(huì)變?yōu)椋篿nvalid。

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

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

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

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

(11)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 語(yǔ)句。

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

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

相關(guān)文章

  • sqlserverdriver配置方法 jdbc連接sqlserver

    sqlserverdriver配置方法 jdbc連接sqlserver

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

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

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

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

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

    SQL Server三種鎖定模式的知識(shí)講解

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

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

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

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

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

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

    這篇文章主要介紹了SQLServer設(shè)置客戶(hù)端使用IP地址登錄的圖文詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常想詳細(xì),對(duì)大家的學(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簡(jiǎn)單的并為一句。通過(guò)本篇文章給大家介紹sqlserver中merge函數(shù)用法詳解,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • sqlserver對(duì)字段的添加修改刪除、以及字段的說(shuō)明

    sqlserver對(duì)字段的添加修改刪除、以及字段的說(shuō)明

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

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

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

最新評(píng)論

墨脱县| 温泉县| 卫辉市| 澜沧| 黔西县| 阿坝县| 大荔县| 许昌市| 巢湖市| 丹阳市| 本溪| 屏山县| 衢州市| 永川市| 朝阳市| 马公市| 厦门市| 陕西省| 华坪县| 通江县| 西乌珠穆沁旗| 辽阳县| 山阳县| 县级市| 武宣县| 新蔡县| 南阳市| 泊头市| 渝北区| 北票市| 中山市| 辽宁省| 美姑县| 新巴尔虎右旗| 香河县| 白水县| 乌兰浩特市| 浮山县| 平江县| 乐都县| 绩溪县|