1.如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
- Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
- Union All:对两个结果集进行并集操作,包括重复行,不进行排序;性能高;
- Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;(MySQL不支持)
- Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。性能高;(MySQL不支持)
-
Full Outer Join:全连接,数据库join的用法很简单,今天发现mysql居然不支持全连接。解决方法:left join union right join
2.left join on 和where条件的放置
- 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面
- 对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。
3.关系数据库表之间有哪几种关系类型
- 一对一的关系
- 例如:一个人对应一个唯一的身份证号,即为一对一的关系。
- 一对多关系
- 例如:一个班级对应多名学生,即为一对多关系
- 多对多关系
- 例如:一个学生可以选多门课程,而同一门课程可以被多个学生选修,彼此的对应关系即是多对多关系。