2013-02-16 3 views
4

Есть ли способ скопировать структуру столбца из уже заполненной таблицы в новую таблицу, которая пуста? Я только спрашиваю о копировании структуры без данныхmysql копировать тип данных столбца в другую таблицу

Пример: У нас есть таблица

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, для которого я хочу сделать только один столбец, но с теми же данными типа типа столбцов животных.

Есть ли способ объединить SHOW COLUMNS/FIELDS с CREATE TABLE или создать таблицу со столбцом, который имеет тип типа VARCHAR (17), а затем ALTER CHANGE его для того же типа, что и столбец animal ?

Я знаю, что это простой вопрос, но я не имел никакой удачи найти ответ на него

ответ

9

Если вы хотите скопировать данные:

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

Если вы хотите скопировать таблицу структура:

использования LIKE для создания пустой таблицы на основе определения другой таблицы, включая любые атрибуты столбцов и индексы, определенные в исходной таблице:

CREATE TABLE new_tbl LIKE orig_tbl; 

Копия создается с использованием той же версии формата хранения таблицы, что и исходная таблица. В исходной таблице требуется привилегия SELECT.

Documentation

Если вы хотите скопировать структуру и данные:

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 
+0

Да, подумал об этом, но я не хочу копировать таблицу и удалять столбцы из нее. Я хочу увидеть другие возможные пути. Тем не менее, спасибо – Dilyana

+2

'CREATE TABLE animals2 AS SELECT animal FROM animals WHERE FALSE;' создаст новую таблицу только с одним столбцом (и не скопирует данные). –

+0

Но ограничение 'PRIMARY KEY' не будет перенесено (я думаю.) –

Смежные вопросы