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

Dil*_*ana 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');
Run Code Online (Sandbox Code Playgroud)

还有一个新的表格predators,我只想制作一个列但与动物列类型具有相同的数据类型.

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

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

Ker*_*mit 9

如果您想复制数据:

INSERT INTO newTable (col1, col2) 
SELECT col1, col2 FROM otherTable
Run Code Online (Sandbox Code Playgroud)

如果要复制表结构:

用于LIKE根据另一个表的定义创建一个空表,包括原始表中定义的任何列属性和索引:

CREATE TABLE new_tbl LIKE orig_tbl;
Run Code Online (Sandbox Code Playgroud)

使用与原始表相同的表存储格式版本创建副本.原始表上需要SELECT权限.

文档

如果要复制结构和数据:

CREATE TABLE animals2 AS 
SELECT *
FROM animals ;
Run Code Online (Sandbox Code Playgroud)

如果你想复制没有数据的结构(但不是所有列):

CREATE TABLE animals2 AS 
SELECT animal                -- only the columns you want
FROM animals 
WHERE FALSE;                 -- and no data
Run Code Online (Sandbox Code Playgroud)

  • `CREATE TABLE animals2 AS SELECT animal from animals WHERE FALSE;`将创建一个只有一列的新表(而不是复制任何数据). (2认同)