非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜

前回はテーブルのデータの更新と削除を行うための「UPDATE」と「DELETE」について学びました。
今回、学んでいくのは削除を行うための「TRUNCATE」と「DROP」です。

Part1からの内容が気になる方は非エンジニアでも知らないとヤバイSQL Part1をご覧ください。

非エンジニアでも知らないとヤバイSQL

前回のおさらい

まずは前回学んだ「UPDATE」と「DELETE」についての軽いおさらいをしていきましょう。

UPDATE
[sql]UPDATE t_employee SET name=’鮎川’AND age=’20’ WHERE no=5;[/sql]

DELETE
[sql]DELETE FROM t_employee WHERE no=5;[/sql]

このようにして書くのが「UPDATE」と「DELETE」です。こちらから前回の復習ができます→前回の記事

今回の内容

今回学ぶのは「TRUNCATE」と「DROP」という削除に関する構文です。
「えっ?削除はDELETEを使うんじゃないの?何が違うの?」と思われる方もいるかもしれません。
削除をするという点では三つとも同じですが実はまったく違うものなんです。

しっかり把握せずに使って顧客のデータを全て消してしまった…なんてことにならないようここでしっかり押さえておきましょう。

「TRUNCATE」って?

TRUNCATEを使うとテーブルを削除することができます。
下のようにして使っていきます。

[sql]TRUNCATE TABLE (テーブル名);[/sql]

このように書くことでテーブルのデータを一括で消すことができます。また、テーブルの構造は消さずに残しておいてくれます。

DELETE文でもテーブルを一括で消すことができますが、TRUNCATEの方が高速で処理を行ってくれます。
テーブルの全部の行を一括で消すものの、WHERE句での指定はできないというところもDELETEとの違いになります。
※DBMSによって異なりますが、MySQLではロールバック(復元)が出来ません。

実際に試してみます。

これがもとの「t_employee」テーブルです

下のように書き込むと
[sql]TRUNCATE TABLE t_employee;[/sql]

構造だけ残して全部のデータが消えます。

データが空っぽです、と表示されます。

したがって、
・テーブルのデータを一括で早く消したい
・テーブルの構造は消さずに残しておきたい
という時に使えます。

DROPって?

DROPは同じくデータを一括で消してくれる文です。
下のように書きます。
[sql]DROP TABLE (テーブル名);[/sql]

TRUNCATEと同じくテーブルのデータを一挙に消してくれます。
TRUNCATEと違うところはテーブルの構造自体も残してくれないというところです。
※これもDBMSによって異なりますが、MySQLではロールバック(復元)が出来ません。

これも試してみます。

もう一度このテーブルを用います。

下のように書くと
[sql]DROP TABLE t_employee;[/sql]

構造ごとデータが消えます。

「t_employee」というテーブルそのものがありませんという風に表示されます。

したがって、
・テーブルの構造ごと一括で消したい
という時に使えます。

まとめ

いかがでしたでしょうか?
・TRUNCATEとDROPはテーブルのデータを一挙に消すことができる。
・違いは構造を残してくれるかどうか
・どちらもMySQLではロールバックができない

ということがわかりました。

次回はテーブルとテーブルを結合させる「JOIN」について学んでいきましょう。

関連記事