MySQLのあるテーブルから別のテーブルにデータをコピーしたり、MySQLのテーブルをコピーしたりする必要がある場合があります。 MySQLでテーブルを複製する方法は次のとおりです。これを使用して、MySQLでテーブルを複製したり、テーブル構造をコピーしたり、あるデータベースから別のデータベースにテーブルをコピーしたりすることもできます。
MySQLでテーブルを複製する方法
MySQLでテーブルを複製する手順は次のとおりです。あるテーブルから別のテーブルにデータをコピーするには、さまざまなユースケースがあります。それぞれについて詳しく見ていきます。
MySQLあるテーブルから新しいテーブルにデータをコピーする
MySQLのテーブルを新しいテーブルに複製する必要がある場合は、以下に示すようにCREATETABLEおよびSELECTステートメントを使用する必要があります
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
既存のテーブル製品があるとします
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
製品をコピーするSQLクエリは次のとおりです テーブルをnew_productsという新しいテーブルに
mysql> create table new_products select * from products; mysql> select * from new_products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
新しいテーブルは、存在しない場合にのみ作成されることに注意してください。そうしないと、エラーが発生します。 MySQLでテーブルを複製するときにエラーが発生しないようにするには、以下に示すように、CREATETABLEステートメントでIFNOTEXISTを使用できます。
mysql> create table if not exist new_products select * from products;
ボーナス読み取り:パラメータを使用したMySQLストアドプロシージャ
1つのテーブルから新しいテーブルに部分的なデータのみをコピーするには、次のようにSELECTステートメントでWHERE条件を使用できます
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
製品から部分的なデータをコピーするSQLクエリは次のとおりです。 テーブルをnew_products2という新しいテーブルに
mysql> create table new_products2 select * from products where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
ボーナスリード:MySQLで複合主キーを作成する方法
MySQLテーブル構造を新しいテーブルにコピー
上記のクエリは、テーブルとデータのみをコピーします。主キー、インデックス、制約、トリガーなどのテーブルオブジェクトはコピーされません。テーブルの構造とデータをコピーするには、以下に示すように、LIKEキーワードを指定してCREATETABLEステートメントを使用する必要があります
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
注文があるとします 主キーのあるテーブル
mysql> describe orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
注文の構造をコピーしたい new_ordersへ テーブル。テーブル構造を新しいテーブルにコピーするSQLクエリは次のとおりです。
mysql> create table new_orders like orders; mysql> describe new_orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
ボーナスリード:MySQLでテーブルを切り捨てる方法
MySQLが1つのテーブルから既存のテーブルにデータをコピーする
上記のステートメントは、古いテーブルの構造を持つ新しいテーブルを作成します。次に、INSERTステートメントを使用して、古いテーブルから新しいテーブルにデータをコピーする必要があります。
INSERT new_table SELECT * FROM existing_table;
注文からデータをコピーするSQLクエリは次のとおりです 既存のテーブルにnew_orders
mysql> insert new_orders select * from orders; mysql> select * from orders; +----+--------------+------------+-------+-------------+---------------------+ | id | product_name | order_date | price | description | created_at | +----+--------------+------------+-------+-------------+---------------------+ | 1 | A | 2020-07-01 | 150 | New product | 2020-06-01 00:00:00 | | 2 | B | 2020-07-01 | 235 | Old product | 2020-06-15 00:00:00 | +----+--------------+------------+-------+-------------+---------------------+
ボーナスリード:MySQL DROP VIEW
あるデータベースから別のデータベースへのMySQLコピーテーブル
MySQLのテーブルをデータベース間で複製する場合は、以下の太字で示すように、テーブル名にデータベース名を含めるだけです
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
最初のステートメントは、MySQLのテーブル構造をソースデータベース(例:source_db)から別のデータベース(例:destination_db)に複製します。 2番目のステートメントは、あるテーブルから別のテーブルにデータをコピーします。
source_dbを置き換えます およびdestination_db 上記のクエリで、それぞれソースデータベースと宛先データベースを使用します。
うまくいけば、この記事がMySQLでテーブルを複製するのに役立つでしょう。多数のレコードを含むMySQLでテーブルを複製する場合は、多くの時間とリソースがかかる可能性があるため、注意してください。
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。