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

时间:2013-02-16 18:18:26

标签: 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),然后将其更改为与{{1相同的类型列?

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

1 个答案:

答案 0 :(得分: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