截斷(truncate)和刪除(delete)的區別

資料建立和操作是資料庫的基礎,我們分別稱之為DDL和DML。DDL是資料定義語言的縮寫。它可以建立或修改資料庫中的資料結構,而這些結構不能用於更改表中的資料。例如,我們的命令只建立一個具有指定表屬性的表,但它從不向表中新增任何行。但是資料操作語言DML能夠新增、刪除或修改表中的資料。一般來說,DDL命令處理表結構,而DML命令處理實際資料。順其自然,為什麼我們偏離了“截短和刪除的區別”這個主題呢?...

截斷(truncate)和刪除(delete)的區別

資料建立和操作是資料庫的基礎,我們分別稱之為DDL和DML。DDL是資料定義語言的縮寫。它可以建立或修改資料庫中的資料結構,而這些結構不能用於更改表中的資料。例如,我們的命令只建立一個具有指定表屬性的表,但它從不向表中新增任何行。但是資料操作語言DML能夠新增、刪除或修改表中的資料。一般來說,DDL命令處理表結構,而DML命令處理實際資料。順其自然,為什麼我們偏離了“截短和刪除的區別”這個主題呢?我們談論DML和DDL是有原因的。在前面的討論中你會明白的。

什麼是截斷命令(a truncate command)?

Truncate命令的目的是刪除整個表。因此,當您使用Truncate命令時,您將丟失表中的所有資料,在使用它時應謹慎。讓我們知道如何使用它。

Truncate的語法:

截斷表名;

在這裡,您應該指定應該整體刪除的表的名稱。這樣可以確保記憶體空間中有任何表。下麵是一個使用Truncate的示例。

下麵是“employee”表,只需檢視其中的資料行即可。

emp id emp名稱 任命
1011 傑克 辦事員
1012 玫瑰色 行政
1014 南希 財務

現在,讓我們在employee表上發出以下命令。

截斷表;

這是上述語法的結果,其中沒有資料。

emp id emp名稱 任命

什麼是刪除命令(a delete command)?

Delete命令的目的是從表中刪除指定的行。在這裡,“Where”子句用於指定需要刪除的行。如果不指定行,命令將刪除表中的所有行。看看它的語法就知道了。

從員工中刪除;

以上語法從“employee”表中刪除所有行。因此結果表將不包含任何資料。

從emp id=1011的員工中刪除;

此語句只刪除emp id為1011的一行,因此生成的表如下所示。

emp id emp名稱 任命
1012 玫瑰色 行政
1014 南希 財務

差異:

  • Truncate是一個DDL;Delete是一個DML:在上面的討論中,我們已經討論了DDL和DML是如何工作的。Truncate命令是一個DDL,它在資料結構級別上執行。但是Delete是一個DML命令,它對錶資料進行操作。DDL的其他例子還有CREATE和ALTER。以類似的方式,我們可以說SELECT、UPDATE和INSERT等命令是DML的完美示例。
  • Truncate和Delete是如何工作的:只要發出Truncate命令,它就會查詢指定的表。然後它將從記憶體中完全刪除所有資料。但在刪除的情況下,工作程式幾乎沒有什麼不同。在這裡,在執行實際的資料操作之前,將原始表資料複製到稱為“回滾”空間的空間中。然後對實際的表資料空間進行更改。所以,兩者的工作方式不同。

截斷->從表中刪除整個資料->表空間現在已釋放。

刪除->將原始表資料複製到回滾空間->刪除指定的資料/整個表->表空間已釋放,但回滾空間已填充。

  • 回滾:回滾就像我們的Microsoft附件中的撤消命令。它用於取消我們最近所做的更改,即從上次儲存的點。要執行此操作,應在編輯資料之前將其複製到回滾空間。儘管這些回滾需要額外的記憶體,但它們對於恢復到原始狀態非常有用。尤其是,當你錯了一些編輯的時候!現在讓我們來看看關於回滾的截斷和刪除。正如我們上面所討論的,截斷從不使用回滾空間,我們無法返回到原始資料。但是Delete命令使用回滾空間,我們可以使用Commit或RollBack分別接受或取消更改。
  • 觸發器:對於那些需要關於觸發器的解釋的人,這裡有一個小提示。觸發器是一組預先指定的操作/操作,當表遇到特定條件時應啟用這些操作。例如,當員工在公司的工作經歷超過一年時,我們可以觸發更改工資金額。這些觸發器也可以在其他表上工作。例如,我們可以在員工加薪後立即更新財務表。

Truncate是DDL命令,這裡不允許使用觸發器。但是Delete是DML命令,這裡允許觸發器。

  • 哪個更快?正如您所猜測的,Truncate命令將比Delete命令更快。前者可以刪除所有資料,不需要檢查任何匹配條件。而且,原始資料不會複製到回滾空間,這節省了大量時間。這兩個因素使得Truncate比Delete工作得更快。
  • 我們能用WHERE子句嗎?Where子句用於指定某些匹配條件,與Truncate無關。因為Truncate從不尋找任何匹配條件,它只是刪除所有行,所以我們不能在這裡使用Where子句。但是我們總是可以藉助Delete命令中的where子句來指定條件。
  • 哪個更佔空間?truncate不會使用回滾空間,它會節省記憶體。但是delete需要回滾空間形式的備份,因此它需要比truncate更多的記憶體空間。

這些就是區別,讓我們以表格的形式來看。

序號 差異 截斷 刪除
1. DDL還是DML? 它是一個DDL,在資料結構級別上執行。DDL的其他例子還有CREATE和ALTER。 它是一個DML命令,對錶資料進行操作。DML代表資料操作語言。SELECT、UPDATE和INSERT等命令是DML的完美示例。DML代表資料操作語言。 
2. 它是如何工作的? 一旦發出Truncate命令,它就會查詢指定的表。然後它將從記憶體中完全刪除所有資料。 在這裡,在執行實際的資料操作之前,將原始表資料複製到稱為“回滾”空間的空間中。然後對實際的表資料空間進行更改。
3. 回降 Truncate命令從不使用回滾空間,因此無法返回原始資料。回滾空間是獨佔空間,在發出DML命令時會被佔用。 Delete命令使用回滾空間,我們可以使用Commit或RollBack分別接受或取消更改。 
4. 觸發器 Truncate是一個DDL命令,  不允許使用觸發器。 Delete是一個DML命令,這裡允許觸發器。 
5. 哪個更快? 它可以刪除所有資料,並且不需要檢查任何匹配條件。而且,原始資料不會複製到回滾空間,這節省了大量時間。這兩個因素使得Truncate比Delete工作得更快。  它使用回滾空間,並且必須始終保留原始資料。這是一個額外的負擔,反過來,比截斷要花很多時間。
6. 我們能用WHERE子句嗎? 因為Truncate從不尋找任何匹配條件,它只是刪除所有行,所以我們不能在這裡使用Where子句。 但是我們總是可以藉助Delete命令中的where子句來指定條件。
7. 哪個更佔空間? truncate不會使用回滾空間,它會節省記憶體。 它需要一個回滾空間形式的備份,因此它需要比truncate更多的記憶體空間。

瞭解任何兩個實體之間的差異可以拓寬對這兩個實體的瞭解!您已經在正確的路徑(即網頁)上登陸,以瞭解truncate和delete命令之間的差異。希望你現在清楚它的區別,讓我們知道如果我們幫助你理解它。你也可以幫我們指出剩下的是什麼!

  • 發表於 2021-06-25 01:12
  • 閱讀 ( 46 )
  • 分類:科技

你可能感興趣的文章

ddl公司(ddl)和dml公司(dml)的區別

...言。這種語言用於改變資料庫的結構。Create、Alter、Drop、Truncate是一些DDL命令。 圖01:SQL ddl命令示例 請參閱以下用TSQL(MSSQL server)編寫的DDL示例; 下面的語句將建立一個名為“employee”的資料庫。 建立資料庫員工; 下面的語句...

  • 發佈於 2020-10-24 04:48
  • 閲讀 ( 49 )

替代插入(substitution insertion)和缺失突變(deletion mutations)的區別

...變和缺失突變的相似性 6. 並排比較-表格形式的替換、**和刪除突變 7. 摘要 什麼是替代突變(substitution mutati***)? 替換突變是指改變不同鹼基對核苷酸序列鹼基對的突變。例如,在替換突變中,一個鹼基對可以被替換成另一個鹼...

  • 發佈於 2021-03-04 15:18
  • 閲讀 ( 42 )

刪除(deletion)和染色體複製(duplication of chromosome)的區別

...染色體複製 4. 染色體缺失與重複的相似性 5. 並排比較-刪除與重複染色體的表格形式 6. 摘要 什麼是染色體缺失(deletion of chromosome)? 染色體缺失是一種染色體重排。這只是染色體臂的一部分缺失。染色體可以從兩個不同的位置...

  • 發佈於 2021-03-04 18:47
  • 閲讀 ( 50 )

更快地查詢檔案,並使用finder標記組織您的mac

... 如何在finder中建立、編輯和刪除標記 ...

  • 發佈於 2021-03-15 05:18
  • 閲讀 ( 49 )

如何正確地停止和刪除icloud日曆垃圾郵件

... 注意:我已經讀到,也可以使用相同的日曆開關和刪除技巧iCloud.com. 但是我似乎無法讓事件移動到“垃圾郵件”日曆。這可能是iCloud的臨時問題,或者它可能根本無法透過web介面工作。如果您想嘗試一下,下面是如何工...

  • 發佈於 2021-03-16 17:01
  • 閲讀 ( 48 )

如何在本地和遠端刪除git中的分支

... 由於這些原因,建立和刪除分支是需要很好理解的操作。您可能會發現自己經常在典型的開發工作流中刪除分支。 ...

  • 發佈於 2021-03-28 02:05
  • 閲讀 ( 62 )

如何在iphone和ipad上新增和刪除電子郵件帳戶

...址,我們將為您提供幫助。我們將向您展示如何透過新增和刪除電子郵件帳戶來管理iPhone和iPad上的郵件帳戶。 ...

  • 發佈於 2021-03-30 13:14
  • 閲讀 ( 52 )

如何在microsoft edge中匯出和刪除儲存的密碼

Microsoft Edge web瀏覽器可以使用您的Microsoft帳戶在所有裝置上儲存和同步您的使用者名稱和密碼。但如果您要離開Edge,最好先匯出並刪除所有儲存的密碼。 雖然微軟Edge內建密碼管理方便,但只限於瀏覽器。我們建議您使用一個...

  • 發佈於 2021-03-31 11:14
  • 閲讀 ( 48 )

如何在firefox中匯出和刪除儲存的密碼

Firefox附帶了一個名為Lockwise的密碼管理器,也可以在Firefox之外使用。但是如果你要使用一個專用的密碼管理器,最好是匯出並刪除你在Firefox中儲存的所有密碼。 儘管Firefox是按鎖執行的,但使用像Bitwarden這樣的專用密碼管理器...

  • 發佈於 2021-03-31 11:55
  • 閲讀 ( 61 )

如何在Windows10上安裝(和刪除)字型檔案

...設定>字型。在那裡,您也可以檢視、管理、安裝和刪除字型。玩得高興! 相關:如何在Windows10的設定應用程式中安裝和管理字型

  • 發佈於 2021-03-31 13:24
  • 閲讀 ( 44 )

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦