有没有办法将列的结构从已填充的表复制到一个空的新表?我只是要求在没有数据的情况下复制结构
示例:我们有一张桌子
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列相同的类型?
我知道这是一个简单的问题,但我没有找到答案
如果您想复制数据:
INSERT INTO newTable (col1, col2)
SELECT col1, col2 FROM otherTable
Run Code Online (Sandbox Code Playgroud)
如果要复制表结构:
用于
LIKE根据另一个表的定义创建一个空表,包括原始表中定义的任何列属性和索引:Run Code Online (Sandbox Code Playgroud)CREATE TABLE new_tbl LIKE orig_tbl;使用与原始表相同的表存储格式版本创建副本.原始表上需要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)