1.表结构的复制(LIKE)
当我们想复制一个表的时候,首先需要创建一个与被复制表相同结构的表。这时候就要用到关键字like:
语法使用:
create table table_name LIKE temp_table
示例:复制一个和表emp(老朋友了)相同结构的mytable_01
create table mytable_01 like emp;
查看一下该表的结构:
desc mytable_01;
2.把一个表的记录插入到另外一张表
在以往我们学到过的知识当中,对一个表进行插入数据时的语句是这样的:
#往tbl_account这个表插入数据
INSERT INTO `tbl_account` (`id`,`name`,`user_age`,`money`)VALUES (3,'张三',26,3000)
一条条的插入,还要做到字段与数值相对应。
现在我们需要将emp表中的数据全部复制到上一节创建的mytable_01中去,可以直接使用select语句查询emp表中的数据直接插入。
语法:
INSERT INTO table_name select * from temp_table;
示例:将emp表中记录全部复制到mytable_01中去。
insert into mytable_01 select * from emp;
完成。
3.蠕虫复制
有时为了对某个sql语句进行效率测试,我们需要海量数据时,可以使用此法为表创建海量数据。此法也叫自我复制,实际上用的还是上一节的语句。
示例:将mytable_01这张表中的记录复制到几十万条。
说直白点就是把自己的记录不停往自己里面插入,以次方级自增。
/*把自己的记录往自己里面插入*/
insert into mytable_01 select * from mytable_01;
执行1次:
执行2次:
执行14次:
可以看到已经有二十多万条记录了。
4.表的去重
现在要对刚才自增到了二十多万条记录的数据库表mytable_01进行去重,也即还原到最开始的14条不重复记录。
思路:
(1) 先创建一张临时表 my_tmp ,该表的结构和 my_tab01 一样
(2) 把 my_tmp 的记录通过 distinct 关键字处理后把记录复制到 my_tmp
(3) 清除掉 my_tab01 记录
(4) 把 my_tmp 表的记录复制到 my_tab01
(5) drop 掉临时表 my_tmp
(1)先创建一张临时表 my_tmp ,该表的结构和 my_tab01 一样
create table my_tmp like mytable_01;
(2)把 my_tmp 的记录通过 distinct 关键字处理后把记录复制到 my_tmp
insert into my_tmp select distinct * from mytable_01;
(3)清除掉 my_tab01 记录
delete from mytable_01;
(4)把 my_tmp 表的记录复制到 my_tab01
insert into mytable_01 select distinct * from my_tmp;
(5)drop 掉临时表 my_tmp
drop table my_tmp;
这一切好像最开始学c语言时交换两个变量的数值一样使用临时变量来完成一样。