Maybaygiare.org

Blog Network

MySQLテーブル内のすべてのデータを削除します

MySQLは、その速度と信頼性のために認識され、世界で最も人気のあるオープンソー この記事では、MySQLデータベーステーブルからすべてのデータを削除する方法と、それが自動増分フィールドにどのように影響するかを見ていきます。MySQLデータベーステーブル内のすべてのデータを削除するには、2つの方法があります。これにより、テーブル内のすべてのデータが非常に迅速に削除されます。 MySQLでは、テーブルは実際に削除されて再作成されるため、クエリの速度が向上します。 返されるMyISAMテーブルの削除された行の数はゼロです。INNODBの場合は、削除された実際の数を返します。これにより、テーブル内のすべてのデータも削除されますが、「TRUNCATE TABLE」メソッドを使用するほど迅速ではありません。 MySQL>=4.0では、削除された行の数が返されます。MySQL3.23では、返される数は常にゼロです。MyISAMテーブルの自動増分列

MyISAMテーブルに自動増分主キー列がある場合、使用するdeleteメソッドによって結果がわずかに異なります。 “TRUNCATE TABLE”メソッドを使用すると、自動インクリメントシード値は1にリセットされます。 “DELETE FROM”メソッドを使用すると、自動インクリメントシードは以前のままになります(たとえば、最後に挿入されたレコードの自動インクリメントフィールドが123の場合、次の挿入されたレコードは124に設定されます)。これはMySQLに当てはまることに注意してください>=4.0;MySQL3.23のTRUNCATEマニュアルページの私の読書から、TRUNCATEはDELETEと同じように動作し、自動増分シードがリセットされないことを意味します。 私は現在、それをテストするために3.23データベースを設定していないので、これを確認することはできません。

INNODBテーブルの自動インクリメント列

INNODBテーブルの場合、”TRUNCATE TABLE”または”DELETE FROM”メソッドを使用するかどうかにかかわらず、自動インクリ 新しいテーブルに5つのレコードを挿入し、すべてのレコードを削除して別のレコードを挿入した場合、使用したメソッドに関係なく、フィールドの値は6にな

2009年2月17日更新:私はもともとMySQL4.0が現在のバージョンだったときにこの投稿を書きました。 私はちょうどMySQL5.0を使用してINNODBテーブルで上記をテストし、TRUNCATEを使用すると自動インクリメントフィールドがデフォルトにリセットされます。 したがって、ある時点で動作が変更されたか、上記の文を作成したときに私が間違っていました。すべてのデータを本当に削除しますか?

データベース内のすべてのデータを削除する前に、実際にすべてのデータを削除するつもりであることを確認する必要があります。 すべてのデータを削除するのが本当に安全であることを確認するために、最初に「SELECT*FROM tablename」または「SELECT COUNT(*)FROM tablename」を支払うことがよくあります。 たぶん、あなたは本当に代わりに”delete FROM tablename WHERE foo=’bar'”のようなことをしたいと思うかもしれません。p>

コメントを残す

メールアドレスが公開されることはありません。