MySQL でデータをコピーせずにテーブル構造をコピーする

Mehvish Ashiq 2023年6月20日
  1. MySQL でデータをコピーせずにテーブル構造をコピーする
  2. CREATE TABLE ... LIKE を使用して MySQL のテーブル構造をコピーする
MySQL でデータをコピーせずにテーブル構造をコピーする

今日は、MySQL でデータをコピーせずにテーブル構造をコピーする方法を見ていきます。 CREATE TABLE ... LIKE ステートメントを使用して、テーブル構造のみをコピーします。

MySQL でデータをコピーせずにテーブル構造をコピーする

詳細を学ぶために、users という名前のテーブルを作成してみましょう。このテーブルは、test データベースに存在し、属性として IDUSERNAME、および EMAIL を持ちます。

テーブルを作成します (users テーブル):

#create a table named 'users' in the 'test' database
CREATE TABLE `test`.`users` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `USERNAME` VARCHAR(45) NOT NULL,
  `EMAIL` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

次に、データではなく、テーブルの構造のみが新しいテーブルにコピーされることを区別するために、レコードを挿入します。

INSERT INTO `test`.`users` (USERNAME, EMAIL) VALUES ('mehvish', 'delfstack@example.com');

CREATE TABLE ... LIKE を使用して MySQL のテーブル構造をコピーする

以下に示す CREATE TABLE ... LIKE ステートメントを実行することで、テーブル定義とも呼ばれるテーブル構造をコピーできます。

# Syntax: CREATE TABLE new_table LIKE original_table;
CREATE TABLE new_user_one LIKE test.users;

上記のクエリは、users テーブルとまったく同じように new_user_one テーブルの構造を作成します。

すべての列名、データ型、デフォルト値、およびテーブルの内容を除くすべてがコピーされます。 テーブル データはコピーされません。

次のクエリを使用して、新しいテーブルの列名、データ型などを再確認できます。

SHOW CREATE TABLE test.new_user_one;

データを取得する状況がある場合は、2つの方法で行うことができます。 テーブル構造のコピー中にデータをコピーするか、コピー後に挿入します。 両方を以下に示します。

テーブル構造をコピーした後にデータをコピーする:

# Syntax: INSERT INTO new_table SELECT * FROM original_table;
INSERT INTO new_user_one SELECT * FROM test.users;

テーブルの構造をコピーしながらデータをコピーする:

# Syntax: CREATE TABLE new_table AS SELECT * FROM original_table;
CREATE TABLE new_user_two AS SELECT * FROM test.users;

2つ目の方法では、CREATE TABLE ... AS SELECT ステートメントを実行して、テーブルの内容をコピーまたは複製できます。 大きなテーブルがある場合、データのコピーに時間がかかる場合があります。

新しいテーブル (ここでは new_user_two) は、基本的な列の定義、デフォルト値、および null 設定のみをコピーすることに注意してください。 AUTO_INCREMENTINDEXES の定義を継承することはありません。

次のクエリを使用して確認できます。

SHOW CREATE TABLE test.new_user_two;
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Table