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

 

posted on 2016-01-07 13:07  huey2672  阅读(207)  评论(0编辑  收藏  举报