• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL复制表结构和表数据

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

1、前言

在功能开发完毕,在本地或者测试环境进行测试时,经常会遇到这种情况:有专门的测试数据,测试过程会涉及到修改表中的数据,经常不能一次测试成功,所以,每次执行测试后,原来表中的数据其实已经被修改了,下一次测试,就需要将数据恢复。

我一般的做法是:先创建一个副本表,比如测试使用的user表,我在测试前创建副本表user_bak,每次测试后,将user表清空,然后将副本表user_bak的数据导入到user表中。

上面的操作是对一个table做备份,如果涉及到的table太多,可以创建database的副本。

接下来我将对此处的表结构复制以及表数据复制进行阐述,并非数据库的复制原理!!!!

下面是staff表的表结构

create table staff (    id int not null auto_increment comment '自增id',    name char(20) not null comment '用户姓名',    dep char(20) not null comment '所属部门',    gender tinyint not null default 1 comment '性别:1男; 2女',    addr char(30) not null comment '地址',    primary key(id),    index idx_1 (name, dep),    index idx_2 (name, gender)) engine=innodb default charset=utf8mb4 comment '员工表';

2、具体方式 

2.1、执行旧表的创建SQL来创建表

如果原始表已经存在,那么可以使用命令查看该表的创建语句:

mysql> show create table staff\G*************************** 1. row ***************************       Table: staffCreate Table: CREATE TABLE `staff` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',  `name` char(20) NOT NULL COMMENT '用户姓名&#3<mark>本文来源gaodaimacom搞#^代%!码&网(</mark>9;,  `dep` char(20) NOT NULL COMMENT '所属部门',  `gender` tinyint(4) NOT NULL DEFAULT '1' COMMENT '性别:1男; 2女',  `addr` char(30) NOT NULL,  PRIMARY KEY (`id`),  KEY `idx_1` (`name`,`dep`),  KEY `idx_2` (`name`,`gender`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表'1 row in set (0.01 sec)

可以看到,上面show creat table xx的命令执行结果中,Create Table的值就是创建表的语句,此时可以直接复制创建表的SQL,然后重新执行一次就行了。

当数据表中有数据的时候,看到的创建staff表的sql就会稍有不同。比如,我在staff中添加了两条记录:

mysql> insert into staff values (null, '李明', 'RD', 1, '北京');Query OK, 1 row affected (0.00 sec) mysql> insert into staff values (null, '张三', 'PM', 0, '上海');Query OK, 1 row affected (0.00 sec) mysql> select * from staff;+----+--------+-----+--------+--------+| id | name   | dep | gender | addr   |+----+--------+-----+--------+--------+|  1 | 李明   | RD  |      1 | 北京   ||  2 | 张三   | PM  |      0 | 上海   |+----+--------+-----+--------+--------+2 rows in set (0.00 sec)

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL复制表结构和表数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址