假设现在有张数据表 users:
CREATE TABLE users (
userid INT(10) UNSIGNED NOT NULL,
username VARCHAR(100) UNIQUE,
passwd VARCHAR(100) DEFAULT '',
PRIMARY KEY (userid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
方法一:
1. 复制数据表及其数据
CREATE TABLE users_bak_01 SELECT * FROM users;
2. 复制数据表但不复制数据
CREATE TABLE users_bak_02 SELECT * FROM users WHERE 0;
注意:这种方法无法复制旧表 users 的主键和索引,使用 SHOW CREATE TABLE 语句检查:
SHOW CREATE TABLE users_bak_01; -- 结果 --
CREATE TABLE `users_bak_01` (
`userid` int(10) unsigned NOT NULL,
`username` varchar(100) DEFAULT NULL,
`passwd` varchar(100) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
方法二:
1. 只复制表结构而不复制表数据
CREATE TABLE users_bak_03 LIKE users;
2. 既复制表结构又复制表数据
CREATE TABLE users_bak_04 LIKE users;
INSERT INTO users_bak_04 SELECT * FROM users;
这种方法能够完全地复制旧表 users 的结构,使用 SHOW CREATE TABLE 语句检查:
SHOW CREATE TABLE users_bak_03; -- 结果 --
CREATE TABLE `users_bak_03` (
`userid` int(10) unsigned NOT NULL,
`username` varchar(100) DEFAULT NULL,
`passwd` varchar(100) DEFAULT '',
PRIMARY KEY (`userid`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8