MySQL 创建、复制表

复制表:这种场景我认为可能比较多的应用在,想修改某个表的数据,但是又没有十足的把握,这时就可以复制一个一模一样的表,用 “复制表” 来做试验。

第一种方法:

1、已经有 test_1 表,想复制一份并命名为:test_2。

  1. 先 show create table test_1;(或者 show create table test_1 \G;)查看 test_1 的结构。
  2. 倒数第三行多了个:AUTO_INCREMENT=8,表示 test_1 表中最后一条数据 `id` 字段的值为:7。
mysql> show create table test_1;
+--------+--------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                      |
+--------+--------------------------------------------------------------------------------+
| test_1 | CREATE TABLE `test_1` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 |
+--------+--------------------------------------------------------------------------------+
1 row in set (0.00 sec)
  1. 直接把 test_1 改为 test_2,创建 test_2 表。(如下:show create table test_2;)
    mysql> create table `test_2`(
        -> `id` int(10) unsigned AUTO_INCREMENT,
        -> `name` varchar(20) not null,
        -> `age` int(10) unsigned,
        -> primary key(`id`)
        -> )engine=innodb default charset=utf8;
    Query OK, 0 rows affected, 3 warnings (0.03 sec)
  2.  这时再将 test_1 表中已有的数据复制到 test_2 中。 

          insert into test_2(id, name, age) select id, name, age from test_1;(或者 insert into test_2(id, name, age) select * from test_1; 或者 insert into test_2 select * from test_1;)

  1. 执行 select * from test_1/test_2; (两表数据一样)

第二种方法:

  1. 使用 like 。
  2. create table test_2 like test_1; (字面意思:创建一个像 test_1 的表,名字为 test_2 )
  3. insert into test_2 select * from test_1;(将查询 test_1 的数据,插入到 test_2 中)
  4. select * from test_1/test_2;(两表数据一样)

经过简单测试,数据正常,符合我的目标要求。(从一些结果来看,正常;但不保证一定正确;上面的编号 1 2 什么的,不太连续,弄半天不知道咋弄了,将就下) 

猜你喜欢

转载自blog.csdn.net/tk1023/article/details/108742036