sql >> データベース >  >> RDS >> Mysql

MySQLドロップテーブル

    MySQLのデータベースからテーブルを削除する必要がある場合があります。これは、MySQLDROPTABLEコマンドを使用して簡単に行うことができます。 MySQLでテーブルを削除する方法は次のとおりです。

    MySQLでテーブルを削除する方法

    MySQLでテーブルを削除する手順は次のとおりです。 MySQL DROP TABLEステートメントを使用して、データベース内の既存のテーブルを削除します。

    DROPTABLEステートメントの構文は次のとおりです。

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

    DROP TABLEステートメントは、1つ以上のデータベーステーブルを削除するために使用できます。

    TEMPORARYキーワードは、一時テーブルのみを削除し、非一時テーブルの削除を防ぎます。

    IF EXISTSキーワードは、テーブルが存在する場合にのみテーブルを削除します。

    MySQLテーブルを削除できるようにするには、DROPTABLE権限が必要であることに注意してください。

    ボーナスリード:MySQLで今日からレコードを取得する方法

    単一のテーブルを削除するMySQLDROPTABLE

    次の表があるとします。

    mysql> create table orders(order_date date, sale int);
    

    このテーブルを削除するためのMySQLDROPTABLEステートメントは次のとおりです。

    mysql> DROP TABLE orders;
    

    存在しないテーブルを削除しようとすると、警告が表示されます:

    mysql> drop table orders;
    ERROR 1051 (42S02): Unknown table 'sample.orders'
    

    ボーナスリード:MySQLの各グループで最初のレコードを取得する方法

    MySQL複数のテーブルを削除

    同じデータベースに複数のテーブルtable1、table2、table3がある場合、それらを削除するためのMySQLDROPTABLEステートメントは次のとおりです

    mysql> DROP TABLE table1, table2, table3;
    

    ボーナスリード:MySQLビューを作成する方法

    MySQLDROPTABLEマッチングパターン

    複数のデータベーステーブルがあり、「order」などの特定のパターンに一致するテーブルを削除する場合は、MySQLDROPTABLEステートメントを直接使用することはできません。たとえば、次のコマンドは機能しません。

    mysql> DROP TABLE like 'order%';
    

    したがって、回避策を使用する必要があります。データベースにorders1、orders2、order3のテーブルがあるとします。

    mysql> create table orders1(order_date date, sale int);
    
    mysql> create table orders2(order_date date, sale int);
    
    mysql> create table orders3(order_date date, sale int);
    

    まず、テーブル名を含む動的SQLクエリ文字列を作成します

    SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
    INTO @droplike
    FROM information_schema.tables
    WHERE @schema = database()
    AND table_name LIKE @pattern;
    

    上記のクエリは、データベース@schema(サンプルなど)内のすべてのテーブル名のリストを含むinformation_schemaテーブルから必要なパターン@pattern(例:order%)に一致するテーブル名をフェッチし、それらを「DROPTABLE」と連結するようにMySQLに指示します。 。 GROUP_CONCATを使用して、テーブル名のコンマ区切りリストを作成します。

    このクエリは@droplike変数に格納されます。

    次に、@ pattern変数と@schema変数に値を設定し、@droplike変数から作成されたプリペアドステートメントを実行します。

    mysql> SET @schema = 'sample';
    
    mysql> SET @pattern = 'order%';
    
    mysql> SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
         INTO @droplike
         FROM information_schema.tables
         WHERE @schema = database()
         AND table_name LIKE @pattern;
    
    mysql> select @droplike;
    +-------------------------------------------------------------+
    | @droplike                                                   |
    +-------------------------------------------------------------+
    | DROP TABLE sample.orders1,sample.orders2,sample.orders3;    |
    +-------------------------------------------------------------+
    
    PREPARE stmt FROM @droplike;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    

    MySQLDROPすべてのテーブル

    同様に、データベース内のすべてのテーブルを削除できます。 AND table_name LIKE @patternを削除するだけです 上記の@droplikeのselectステートメントから

    SET @schema = 'sample';
    SELECT CONCAT('DROP TABLE IF EXISTS',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
         INTO @droplike
         FROM information_schema.tables
         WHERE @schema = database();
    

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. カンマリストでのMySQL検索

    2. MySQLでの複数の更新

    3. MONTHNAME()の例– MySQL

    4. SQL Server 2008での一括削除(データを削除するための一括コピー(bcp)のようなものはありますか?)