此篇博客讲解MySQL中的复合查询。前面一直讲的都是一些基础的查询语句,但是显然是不能满足需求的,所以此篇博客讲解更为复杂的查询语句。
对于emp表:
表准备:
emp:
dept:
salgrade:
因为上面的数据来自emp和deptno表,因此要联合查询。
最后结果:
很明显有些数据是多余的,所以加上限制条件:
然后显示雇员名、雇员工资和所在的部门的名字:
自连接是指在同一张表连接查询。
显示员工ford的上级领导的编号和姓名
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
返回一行记录的子查询
返回多行记录的子查询
并不是实际存在的表才能做笛卡尔积,通过查询出来的表也能做笛卡尔积:
单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句
任何时刻,查询出来的临时结构,本质在逻辑上属于表结构!!!
子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。
对于select要查询的要区分出不同属性的数据,每样属性都需要在group by后面出现,不论属性之间是否是一对一关系
多表查询的指导思想:解决多表问题的本质:想办法将多表转换为单表,所以mysql中,所有select的问题全部都可以转换为单表问题!!!
在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。
该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
注意的是:要将两个表或起来,两个表的列数必须一样:
总结:
好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。
祝大家越来越好,不用关注我(疯狂暗示)