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

MySQLでテーブルを切り捨てる方法

    MySQLデータベースのテーブルのすべての行を削除する必要がある場合があります。 TRUNCATE TABLE、DROP TABLE、およびDELETEステートメントを使用してこれを行うには複数の方法があります。この記事では、MySQLTRUNCATETABLEステートメントを使用してMySQLでテーブルを切り捨てる方法を説明します。

    MySQLでテーブルを切り捨てる方法

    TRUNCATETABLEステートメントを使用してMySQLでテーブルを切り捨てる方法は次のとおりです。 MySQLTRUNCATETABLEステートメントの構文は次のとおりです。

    TRUNCATE [TABLE] table_name;

    上記のクエリでは、table_name。の代わりに、切り捨てられるテーブル名を指定する必要があります。

    キーワードTABLEは、TRUNCATEの後のオプションです。

    ボーナスリード:MySQL DROP VIEW

    MySQLTRUNCATETABLEの例

    テーブルが注文あるとします。 MySQLで。

    mysql> create table daily_orders(id int, order_date date,amount int);
    
    mysql> insert into daily_orders(id, order_date, amount) 
           values(1, '2020-07-01',250),(2,'2020-07-02',320),
           (3,'2020-07-03',450);
    
    mysql> select * from daily_orders;
    +------+------------+--------+
    | id   | order_date | amount |
    +------+------------+--------+
    |    1 | 2020-07-01 |    250 |
    |    2 | 2020-07-02 |    320 |
    |    3 | 2020-07-03 |    450 |
    +------+------------+--------+
    

    MySQLでテーブルを切り捨てるためのSQLクエリは次のとおりです。

    mysql> truncate table daily_orders;
    
    mysql> select * from daily_orders;
    Empty set (0.00 sec)
    

    ボーナスリード:MySQLでインデックスを作成する方法

    MySQLTRUNCATEとDELETE

    TRUNCATE TABLEは、MySQLのDELETEステートメントに似ています。ただし、いくつかの重要な違いがあります。 MySQLのTRUNCATEとDELETEの違いは次のとおりです。

    MySQL DELETE

    • DELETEは、データ操作言語(DML)ステートメントです。一度に1行ずつ削除します。したがって、行ロックを使用して実行され、各行は削除のためにロックされます
    • DELETE操作がログに記録されます
    • DELETEステートメントでWHERE句を指定して、テーブル内の特定の行のみを削除できます
    • 削除操作がログに記録されるため、DELETEは切り捨てよりも低速です

    MySQL TRUNCATE

    • TRUNCATEは、データ記述言語(DDL)コマンドであり、テーブルをロックして削除しますが、行はロックしません。
    • TRUNCATEは、テーブル内のすべてのデータを削除します。したがって、TRUNCATEステートメントでWHERE句を指定することはできません。
    • TRUNCATE操作はログに記録されないため、DELETEステートメントよりもはるかに高速です。

    ロールバックは、DELETEステートメントとTRUNCATEステートメントの両方で可能です。

    ボーナスリード:MySQLでストアドプロシージャを作成する方法

    外部キーを使用してテーブルを切り捨てる方法

    テーブルに外部キー制約がある場合、そのテーブルに対してTRUNCATEステートメントを実行すると、次のエラーが発生します。

    ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key 
    constraint fails

    したがって、次のコマンドを使用して、テーブルを切り捨てる前にMySQLにログインし、外部キーチェックを無効にする必要があります

    SET FOREIGN_KEY_CHECKS=0;

    テーブルを切り捨てた後、外部キーチェックを再度有効にします

    SET FOREIGN_KEY_CHECKS=1;

    ボーナスリード:MySQLでユーザーを作成する方法

    MySQLですべてのテーブルを切り捨てる方法

    MySQL TRUNCATE TABLEでは、一度に1つのテーブルのみを削除できます。したがって、複数のテーブルを削除する場合は、個別のTRUNCATETABLEコマンドを発行する必要があります。複数のテーブルを切り捨てる例を次に示しますtable1、table2、table3、…

    mysql> TRUNCATE TABLE table1;
    mysql> TRUNCATE TABLE table2;
    mysql> TRUNCATE TABLE table3;
    

    ボーナスリード:MySQLでデータベースを作成する方法

    データベース内のテーブル名を使用して、複数のTRUNCATETABLEステートメントを生成するSQLクエリを次に示します。次のクエリのDATABASE_NAMEをデータベース名に置き換えます。

    mysql> SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
         FROM INFORMATION_SCHEMA.TABLES where  table_schema in ('sample');
    +------------------------------------------------------------+
    | Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') |
    +------------------------------------------------------------+
    | TRUNCATE TABLE sample.a;                                   |
    | TRUNCATE TABLE sample.calendar;                            |
    | TRUNCATE TABLE sample.categories;                          |
    | TRUNCATE TABLE sample.daily_orders;                        |
    | TRUNCATE TABLE sample.login;                               |
    | TRUNCATE TABLE sample.meeting;                             |
    | TRUNCATE TABLE sample.order_status;                        |
    | TRUNCATE TABLE sample.orders;                              |
    | TRUNCATE TABLE sample.orders2;                             |
    | TRUNCATE TABLE sample.orders3;                             |
    | TRUNCATE TABLE sample.product_sales;                       |
    | TRUNCATE TABLE sample.products;                            |
    | TRUNCATE TABLE sample.sales;                               |
    | TRUNCATE TABLE sample.user_data;                           |
    | TRUNCATE TABLE sample.users;                               |
    +------------------------------------------------------------+
    

    上記のクエリ結果を使用して、データベース内のすべてのテーブルを切り捨てます。うまくいけば、My​​SQLでテーブルを切り捨てることができます

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

    1. MacへのOdooのインストールでコマンドLESSCを実行できませんでした

    2. MySQLで重複する行を見つける4つの方法

    3. SQLの完了。成功と失敗の物語

    4. 4すぐに使えるSQLデータ変換方法とユースケース