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权限。
如果要复制的结构和数据:
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
是的想到这一点,但我不想复制表,并从中删除列。我想看看其他可能的方式。但是,谢谢 – Dilyana 2013-02-16 18:26:49
'CREATE TABLE animals2 AS SELECT动物从动物WHERE FALSE;'将仅创建一个只有一列的表(并且不复制任何数据)。 – 2013-02-16 18:27:47
但是'PRIMARY KEY'约束不会被结转(我认为)。 – 2013-02-16 18:28:30