2014/04/16

mysql delete truncate

★テーブルに含まれる全データを削除する場合:
TRUNCATE TABLE tbl_name;
DELETE FROM tbl_name;


2つの違いは「DELETE FROM tbl_name」がデータを1つ1つ削除するのに対して「TRUNCATE TABLE tbl_name」はいったん
「DROP TABLE tbl_name」を行った上で再度同じテーブルを作成する点にある
・データを1つ1つ削除するよりもテーブルそのものを削除して作り直すほうが多くの場合高速
・AUTO_INCREMENTのクリア。


テーブルがInnoDB型の場合で、外部参照の親テーブルとなっている場合には「TRUNCATE TABLE tbl_name」を実行すると「DELETE FROM tbl_name」を使ってデータの削除が行われます。
この場合、子テーブルにおいてON DELETE句が呼び出されます。MyISAM型の場合にはテーブルの削除を使ってデータが削除されるためて子テーブルのON DELETE句は呼び出されません。
AUTO_INCREMENTが設定されているカラムが含まれていた場合、TRUNCATE文を使って全データの削除が行われるとAUTO_INCREMENTの値が初期化されます。
これはInnoDB型で外部参照の親テーブルとなっている場合も同じように初期化されます。