MySQL - 复制数据表
假设现在有张数据表 users:
CREATE TABLE users ( userid INT(10) UNSIGNED NOT NULL, username VARCHAR(100) UNIQUE, passwd VARCHAR(100) DEFAULT '123456', 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 '123456' ) 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 '123456', PRIMARY KEY (`userid`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8