mysql将列数据类型复制到另一个表

问题描述:

有没有办法将列的结构从已填充的表复制到空的新表中?我只要求有关复制结构没有数据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列组合在一起/ FIELDS使用CREATE TABLE或使用具有某种类型的像VARCHAR(17)列创建表,然后ALTER其更改为相同类型的animal列?

我知道这是一个简单的问题,但我还没有得到任何运气找到它的答案

如果你要复制的数据:

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 2013-02-16 18:26:49

+2

'CREATE TABLE animals2 AS SELECT动物从动物WHERE FALSE;'将仅创建一个只有一列的表(并且不复制任何数据)。 – 2013-02-16 18:27:47

+0

但是'PRIMARY KEY'约束不会被结转(我认为)。 – 2013-02-16 18:28:30