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; | +------------------------------------------------------------+
上記のクエリ結果を使用して、データベース内のすべてのテーブルを切り捨てます。うまくいけば、MySQLでテーブルを切り捨てることができます
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。