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

MySQLでテーブルを複製する方法

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

    1. SQLで複雑なクエリを作成する方法

    2. OracleSQLDeveloperとPostgreSQL

    3. SQL Serverの既存のテーブルに主キーを追加する方法(T-SQLの例)

    4. Android-すでに閉じられているオブジェクトを再度開こうとします:loaderManagerを使用してSQLiteQuery