DELETE FROM 敘述句 (SQL DELETE FROM Statement)
DELETE FROM 是用來刪除資料表中的資料。
DELETE FROM 語法 (SQL DELETE FROM Syntax)
DELETE FROM table_name
WHERE column_name operator value;
WHERE 條件式記得要加哦!不然 “全部的” 資料都會刪除了。
DELETE FROM 敘述句用法 (Example)
假設我們想從下面的 customers 資料表中刪除顧客王二的資料:
| C_Id | Name | City | Address | Phone |
|---|---|---|---|---|
| 1 | 張一 | 台北市 | XX路100號 | 02-12345678 |
| 2 | 王二 | 新竹縣 | YY路200號 | 03-12345678 |
| 3 | 李三 | 高雄縣 | ZZ路300號 | 07-12345678 |
我們可以使用以下的 DELETE FROM 敘述句:
DELETE FROM customers WHERE Name='王二';
刪除後的資料表現在變成:
| C_Id | Name | City | Address | Phone |
|---|---|---|---|---|
| 1 | 張一 | 台北市 | XX路100號 | 02-12345678 |
| 3 | 李三 | 高雄縣 | ZZ路300號 | 07-12345678 |
一次刪除資料表中所有的資料
我們還可以這樣一次刪除某資料表中所有的資料:
DELETE FROM table_name;
或者:
DELETE * FROM table_name;
TRUNCATE TABLE 與 DELETE FROM 的比較
除了 DELETE FROM 之外,SQL 還提供了 TRUNCATE TABLE 語句來刪除資料表中的所有資料。雖然兩者都能達到清空資料的效果,但在運作方式和使用場景上有很大的不同。
TRUNCATE TABLE 語法 (TRUNCATE TABLE Syntax)
TRUNCATE TABLE table_name;
TRUNCATE TABLE 會一次移除資料表中的所有資料列,並且無法使用 WHERE 條件來篩選要刪除的資料。
TRUNCATE TABLE 用法 (Example)
假設我們想要清空 customers 資料表中的所有資料:
TRUNCATE TABLE customers;
執行後,customers 資料表的所有資料都會被移除,但資料表本身的結構(欄位定義、索引等)會被保留。
DELETE FROM 與 TRUNCATE TABLE 的差異
| 比較項目 | DELETE FROM | TRUNCATE TABLE |
|---|---|---|
| 刪除範圍 | 可搭配 WHERE 條件刪除部分資料 | 只能刪除全部資料 |
| 執行速度 | 較慢(逐筆刪除) | 較快(直接釋放資料頁) |
| 交易記錄 | 每筆刪除都會寫入交易記錄 | 只記錄頁面釋放的操作 |
| ROLLBACK | 支援(可復原) | 部分資料庫不支援 |
| 觸發器 (Trigger) | 會觸發 DELETE 觸發器 | 不會觸發觸發器 |
| 自動編號重置 | 不會重置 AUTO_INCREMENT | 會重置 AUTO_INCREMENT |
簡單來說,如果你只需要刪除符合特定條件的資料,使用 DELETE FROM;如果你想要快速清空整個資料表的資料並重置自動編號,使用 TRUNCATE TABLE 會更有效率。
留言功能已關閉。