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,我只想创建一个列,但数据类型与动物的列类型相同。

有没有办法将 SHOW COLUMNS/FIELDS 与 CREATE TABLE 结合起来,或者使用具有某种类型(如 VARCHAR(17))的列创建表,然后将其更改为与animal列相同的类型?

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

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 回答