0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

100日でSQLの達人になる@LeetCode! Day57 <DELETE, TRUNCATE, DROPの違い>

Posted at

DELETE, TRUNCATE, DROPの違いについて理解する

前回に引き続きLeetCodeの問題はお休み。
LeetCodeではあまり出てこないテーマを一気に学習します。
今回のテーマはDELETE, TRUNCATE, DROPの違いです。

DELETE, TRUNCATE, DROPも全てテーブルのデータを一括して削除することができます。

前回同様にdb<>fiddleを使います。

構文は下記の通り

SQL
DELETE テーブル名 WHERE句 -- WHERE句を省略すると全データ削除
TRUNCATE TABLE テーブル名
DROP TABLE テーブル名

まとめると

クエリ 削除範囲 ロールバック 速度 テーブル構造
DELETE WHEREで指定可能 可能 遅い 残る
TRUNCATE TABLE 指定不可 不可能 早い 残る
DROP TABLE 指定不可 不可能 早い 残らない

ロールバックについては十分に理解できていないのですが、
COMMITしていなければ削除の取り消しが可能ということです。

下記が実行例です。

CREATE TABLE tbl1 (id INT, name varchar(1))

INSERT INTO tbl1 (id, name) VALUES(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd'),(5, 'e')

SELECT id, name
  FROM tbl1
  
DELETE tbl1 WHERE id > 3
     
SELECT id, name
  FROM tbl1
  
TRUNCATE TABLE tbl1

SELECT id, name
  FROM tbl1
  
DROP TABLE tbl1

-- SELECT id, name
--  FROM tbl1
GO

id | name
-: | :---
 1 | a   
 2 | b   
 3 | c   
 4 | d   
 5 | e   

id | name
-: | :---
 1 | a   
 2 | b   
 3 | c   

id | name
-: | :---

db<>fiddle here

DROP TABLE後に、SELECT文を使用すると、テーブルそのものが無いので下記のエラーが出てきます。

Msg 208 Level 16 State 1 Line 20
Invalid object name 'tbl1'.

今日のポイントはDELETE, TRUNCATE, DROPの違いとした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?