有没有办法将列的结构从已填充的表复制到一个空的新表?我只是要求在没有数据的情况下复制结构
实施例: 我们有一张桌子
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相同的类型列?
我知道这是一个简单的问题,但我没有找到答案的运气
答案 0 :(得分:9)
如果您想复制数据:
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