はじめに
DROP TABLE
ステートメントを使用すると、MySQLデータベースからテーブルを削除できます。このステートメントは、構造全体とテーブルのコンテンツを削除します。
チュートリアルでは、 DROP
について説明します。 ステートメントコマンドと表示オプションMySQLデータベースからテーブルを削除する 。
前提条件
- ターミナルウィンドウ/コマンドラインへのアクセス
- MySQLを実行しているシステム
- 作業データベースまたはテストデータベース
- 必要な権限を持つMySQLユーザー(DROP権限が必要)
DROPTABLEMySQLコマンド構文
MySQLでテーブルを削除するには、 DROP TABLE
を使用します 声明。コマンドの基本的な構文は次のとおりです。
DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name] [RESTRICT | CASCADE];
構文を分解してみましょう:
-
DROP TABLE
ステートメントは、テーブルとその行を完全に削除します。 -
[TEMPORARY]
オプションを使用すると、一時テーブルのみを削除できます。 -
[IF EXISTS]
オプションは、テーブルが存在する場合にのみテーブルを削除します。 -
[RESTRICT]
オプションは、MySQLの将来のイテレーションで使用できるようになります。子行が親行の値を参照している場合、親行が削除されないようにします。 -
[CASCADE]
オプションを使用すると、行を削除すると、その行を参照する関連テーブルのすべての行も削除されます。このオプションは、MySQLの将来のイテレーションで使用できるようになります。
DROPステートメントを使用してテーブルを削除する
テーブルを完全に削除するには、MySQLシェル内に次のステートメントを入力します。
DROP TABLE table1;
table1
を置き換えます 削除するテーブルの名前を指定します。出力は、テーブルが削除されたことを確認します。
DROPを使用して既存のテーブルのみを削除する
存在しないテーブルを削除しようとすると、MySQLはエラーを生成します。これは、 DROP
を含めるときに問題になる可能性があります 事前定義されたスクリプトのステートメント。
テーブルが最初に存在するかどうかをMySQLで確認するには:
DROP TABLE IF EXISTS table1;
IF EXISTS
オプションは、 table1
の場合に警告を生成します 存在しません。
このオプションを使用すると、スクリプトがエラーでスタックするのを防ぐことができます。次のように入力して警告を表示します:
SHOW WARNINGS;
複数のテーブルを削除する方法
1つのDROP
で複数のテーブルを削除するには ステートメント:
DROP TABLE IF EXISTS table1, table2, table3;
IF EXISTS
オプションは、1つの警告を table1
として表示します 存在しません。
一時テーブルを削除する方法
一時テーブルは、データセットを使用する直前にデータセットを生成および保存するために使用されます。
たとえば、 SELECT
の結果を保存する場合があります。 一時テーブルに複数のJOINステートメントがあるステートメント。次に、一時テーブルを簡単にクエリします。
通常のテーブルを失うリスクを冒さずに一時テーブルを削除するには、 TEMPORARY
を使用します オプション:
DROP TEMPORARY TABLE IF EXISTS table4;
文字列に基づいてテーブルを削除する方法
MySQLには、文字列に一致するテーブルを削除するための組み込みコマンドがありません。代わりに、スクリプトを使用してこのタスクを実行してください。
1.フィルタリングするデータベースと文字列を定義します。
set @schema = 'tableselection';
set @string = 'table%';
tableselection
を置き換えます データベースの名前で。 table%
を置き換えます 選択および削除する文字列を使用します。必ず%
を残してください 最後にワイルドカード。
2.文字列に一致するすべてのテーブルを選択するMySQLステートメントを作成します。
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
このコードは、 table%
を持つすべてのテーブルを選択します information_schema
から指定された文字 テーブル。次に、それらを連結して、 DROP
を実行します。 グループに対する声明。
3.このコードの結果から選択を作成します:
SELECT @droptool;
4.コマンドの内容を表示します:
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
以下のセクションのコードは、使いやすさのために全体が示されています。
set @schema = 'tableselection';
set @string = 'table%';
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
SELECT @droptool;
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;