別のテーブルと一致するテーブルをMySQLで作成しますか?


84

MySQLを使用しています。EMPというテーブルがあり、同じスキーマ、同じ列、同じ制約を持つテーブル(EMP_TWO)をもう1つ作成する必要があります。これどうやってするの?


1
phpMyAdminのようなもので構造をエクスポートしてから、テーブル名を変更してみましたか?
jprofitt 2012年

回答:


176

別のテーブル構造/制約に基づいて新しいテーブルを作成するには、次を使用します。

CREATE TABLE new_table LIKE old_table;     

必要に応じて、データをコピーするには、

INSERT INTO new_table SELECT * FROM old_table;  

テーブルドキュメントを作成する

LIKEオプションに関する注意事項に注意してください:

LIKEを使用して、元のテーブルで定義された列属性とインデックスを含む、別のテーブルの定義に基づいて空のテーブルを作成します。

CREATE TABLE new_table LIKE original_table; コピーは、元のテーブルと同じバージョンのテーブルストレージ形式を使用して作成されます。元のテーブルにはSELECT権限が必要です。

LIKEはベーステーブルに対してのみ機能し、ビューに対しては機能しません。

CREATE TABLE ... LIKEは、元のテーブルに指定されたDATADIRECTORYまたはINDEXDIRECTORYテーブルオプション、あるいは外部キー定義を保持しません。


6
+1 MySQLを何年も使用LIKEしていて、CREATEステートメントで使用できることにまったく気づいていませんでした。
jprofitt 2012年

@jprofitt先日、本番サーバー(重要なクエリ)で何かをテストするためにこれを実行したかったので、私は知っています->非常に便利です!
マンス2012年

@ManseUKあるデータベースからテーブルをコピーして、別のデータベースに再作成したい場合はどうすればよいですか?
Yaje 2014

これは素晴らしい!ありがとう...本当にとても便利です!
hassantm 2014

誰かが別のデータベースで同じテーブル構造を必要とする場合、あなたがする必要があるのはCREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy Adaro 2018

13

構造のみをコピーする場合は、

create table new_tbl like old_tbl;

データだけでなく構造もコピーする場合は、

create table new_tbl select * from old_tbl;

5

別のテーブルと一致するテーブルをMySQLで作成しますか?回答:

CREATE TABLE new_table AS SELECT * FROM old_table;

4

このように行ってみませんか

CREATE TABLE new_table LIKE Select * from Old_Table;   

またはあなたはこのようにデータをフィルタリングすることによって行くことができます

CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;   

新しいテーブルに同じ制約を設定するには、最初にスキーマを作成する必要があり、次にスキーマ作成用のデータを取得する必要があります

CREATE TABLE new_table LIKE Some_other_Table;

1
likeselect *1つのステートメントの両方を使用することは可能ですか?エラーが発生します。また、この回答を確認してくださいstackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118 2014

mysqlについてはよく
わかり

<OldTableName>から<NewTableName>に*を選択するsqlserverでも同様のことが利用できます。
trikaldarshiii 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.