5

すでに入力されているテーブルから空の新しいテーブルに列の構造をコピーする方法はありますか?データなしで構造をコピーすることだけを求めています

例:テーブルがあります

CREATE TABLE `animals` (
`animal` varchar(11) NOT NULL,
   `food` varchar(11) NOT NULL,
  PRIMARY KEY (`animal`)
 ) ENGINE=InnoDB

INSERT INTO `animals` (`animal`, `food`) VALUES
('cat', 'chips'),
('dog', 'bones'),
('shark', 'ppl');

predatorsそして、動物の列タイプと同じデータ型で1つの列だけを作成したいという新しいテーブルが呼び出されました。

SHOW COLUMNS /FIELDSをCREATETABLEと組み合わせたり、VARCHAR(17)のようなタイプの列でテーブルを作成してから、それをanimal列と同じタイプにALTER CHANGEする方法はありますか?

これは簡単な質問ですが、答えを見つけることができませんでした。

4

1 に答える 1

10

データをコピーする場合:

INSERT INTO newTable (col1, col2) 
SELECT col1, col2 FROM otherTable

テーブル構造をコピーする場合:

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

CREATE TABLE new_tbl LIKE orig_tbl;

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

ドキュメンテーション

構造とデータをコピーする場合:

CREATE TABLE animals2 AS 
SELECT *
FROM animals ;

また、データなしで構造(すべての列ではない)をコピーする場合:

CREATE TABLE animals2 AS 
SELECT animal                -- only the columns you want
FROM animals 
WHERE FALSE;                 -- and no data
于 2013-02-16T18:22:15.997 に答える