Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


13.1.28 DROP TABLE 構文

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

DROP TABLE は、1 つ以上のテーブルを削除します。各テーブルに対する DROP 権限が必要です。すべてのテーブルデータとテーブル定義が削除されるため、このステートメントには注意してください。引数リストで指定されているいずれかのテーブルが存在しない場合、MySQL は削除できなかった存在しないテーブルを名前で示すエラーを返しますが、リスト内の存在しているすべてのテーブルの削除も行います。

重要

テーブルが削除されても、そのテーブルに対するユーザー権限は自動的には削除されませんセクション13.7.1.4「GRANT 構文」を参照してください。

パーティション化されたテーブルの場合は、DROP TABLE によってテーブル定義、そのすべてのパーティション、およびそれらのパーティションに格納されていたすべてのデータが永続的に削除されることに注意してください。また、削除されたテーブルに関連付けられているパーティション化定義 (.par) ファイルも削除されます。

存在しないテーブルに対してエラーが発生しないようにするには、IF EXISTS を使用します。IF EXISTS を使用している場合は、存在しないテーブルごとに NOTE が生成されます。セクション13.7.5.41「SHOW WARNINGS 構文」を参照してください。

RESTRICTCASCADE は、移植を容易にするために許可されています。MySQL 5.6 では、これらは何も行いません。

注記

DROP TABLE は、TEMPORARY キーワードが使用されていないかぎり、現在のアクティブなトランザクションを自動的にコミットします。

TEMPORARY キーワードには、次の効果があります。

  • このステートメントは、TEMPORARY テーブルのみを削除します。

  • このステートメントは、進行中のトランザクションを終了しません。

  • アクセス権は確認されません。(TEMPORARY テーブルは、それを作成したセッションにのみ表示されるため、確認は必要ありません。)

TEMPORARY の使用は、TEMPORARY 以外のテーブルを誤って削除してしまわないようにするための適切な方法です。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by Oliver Frick on August 22, 2011
You can use "show tables from mysqldb1 like 'name%' "
And then copy paste into a text editor and build a comma separated list to feed "drop table "... For me this is faster than write the procedure :)
  Posted by Peter Hine on May 7, 2012
for table in `echo show tables in piwik\; | mysql | grep piwik_archive_`;do echo drop table $table\; | mysql -D piwik; done

linux example for removing all the archive tables in a database called piwik to simulate the "drop table like 'piwik_archive_%'" example above
  Posted by Brendan Byrd on July 22, 2015
It should be noted that the TEMPORARY keyword is also allowed on slave servers, especially non-existent temporary tables. For example, if 'tempo' is an existing temp table for a non-admin user on a slave:

> DROP TABLE IF EXISTS tempo;
Query OK, 0 rows affected (0.00 sec)

> DROP TABLE IF EXISTS tempo;
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

> DROP TEMPORARY TABLE IF EXISTS tempo;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MySQL knows that the DROP is for a temp table if the table exists, but assumes that the DROP is for a non-temp table if the table doesn't exist, unless the TEMPORARY keyword is used.

Sign Up Login You must be logged in to post a comment.