在SQL中delete和truncate指令都可用來刪除資料(記錄),那麼它們之間有什麼不同?下面這篇文章就來跟大家介紹delete和truncate指令之間的差別,希望對大家有幫助。
什麼是delete指令?
delete指令有助於從資料庫中的表中刪除記錄。 【影片教學推薦:MySQL教學】
範例:以下是一張student表,包含3個欄位:student_id、name、marks
可以使用SQL的delete指令來刪除student表中的所以記錄:
delete from student;
也可以刪除student表中的特定記錄:
delete from student where student_id =2;
上面的SQL指令將刪除student_id為2的記錄。執行該語句後,表格中將只包含兩筆記錄:student_id為1和3的記錄。
什麼是truncate指令?
truncate指令有助於從表中刪除所有記錄。它也從資料庫中刪除表結構。因此,在特定表上執行truncate指令時,它也會初始化主鍵。
以下SQL指令將刪除student表中的所有記錄。此外,它會從資料庫中刪除表結構。
truncate table student;
delete和truncate指令之間的差異是什麼?
1、指令類型
delete是資料操作語言(DML)指令;而truncate是資料定義語言(DDL)指令。
2、功能
delete指令根據指定的SQL語句從表中刪除單個,多個或所有記錄;而truncate指令從資料庫中刪除所有記錄和表結構。
3、Where子句
delete指令支援WHERE子句,可以使用帶有DELETE的where子句來過濾和刪除特定記錄;而,truncate指令不支援WHERE子句。
4、鎖定
delete指令採用行級鎖定,表中的每一行都被鎖定以進行刪除;truncate指令採用表級鎖定,鎖定了整個表以刪除所有記錄。
5、索引視圖
delete指令可以與索引視圖一起使用;而,truncate指令不能與索引視圖一起使用。
6、執行速度
由於delete指令維護日誌,因此速度很慢。但是,由於truncate指令在交易日誌中維護最少的日誌記錄,因此執行速度更快。
7、表格結構
delete指令不會影響表格結構,而truncate指令會從資料庫中刪除表格結構。
8、交易空間
delete指令比truncate指令使用更多的交易空間。
以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是SQL指令delete和truncate有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!