1. 表复制
自我复制数据(蠕虫复制)
有时,为了对某个sql语句进行效率测试,我们需要海量的数据时,可以使用此法为表创建海量数据
演示如何自我复制
思考:如何去掉一张表中的重复数据
思路:
-
先创建一张临时表 my_tmp,该表的结构和 my_tab02 一样
-
把 my_tmp 的记录,通过 distinct 关键字 处理后 , 把记录复制到 my_tmp
-
清除 my_tab02 中的所有记录
-
把 my_tmp 中的记录 复制到 my_tab02 中
-
drop 掉临时表 my_tmp
2. 合并查询
有时在实际应用中,为了合并多个 select 语句的结果,可以使用集合操作符号 union,union all
-
union all
该操作符用于取得两个结果集的并集,当使用该操作符时,不会取消重复行。
-
union
该操作符用于取得两个结果集的并集,当使用该操作符时,会取消重复行。
3. 外连接
- 左外连接:如果左侧的表完全显示我们就说是左外连接
- 右外连接:如果右侧的表完全显示我们就说是右外连接
举例说明:
- 创建两张表,一张存放名字,一张存放分数
要求:显示所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空
- 若用多表查询的方式,则无法查询到成绩为空的人的结果
- 用左外连接的方式来查找,就可以将成绩为空的人的名字也显示出来
说明:左外连接就是左侧表完全显示,所以会把stu的内容全部显示出来
- 用右外连接的方式来查找,就可以将成绩为空的人的名字也显示出来
说明:右外连接就是右侧表完全显示,即使和左表没有匹配的记录,也会把exam的内容全部显示出来
问题:列出部门名称和这些部门的员工名称和工作,同时要求显示出那些没有员工的部门