[学习打卡]04 MySql复合查询(外连接 子查询 联合查询。。)
练习:
1、外连接
说明:
查询结果为主表中所有的记录;如果从表中有匹配项,则显示匹配项,如果从表中没有匹配项,则显示null;
应用场景:
一般多用于查询主表中有但从表中没有的记录。
特点:
1、外连接分主从表,两个表的顺序不能随意调换
2、左连接,左边为主表
右连接,右边为主表
语法
select 查询列表
from 表1 别名(主表)
left / right / full outer join 表2 别名 (outer 可不写) //左外 右外 全连接
on 连接条件(表一的某个列等于表二的某个列)
where 筛选条件
group by 分组
having 分组后筛选条件
order by 排序
其实 from后面紧跟的表 就是主表 left outer join 后边跟的表就是从表
两个表的位置不可以互换,互换位置之后 就变成了 右连接了。
常见连接(重要)
全连接(mysql不支持)
2、子查询
说明:
当一个查询语句里又嵌套了另一个完整的select语句,则被嵌套的的select语句称为子查询或内查询。
外面的select语句称为外查询,或者主查询语句
分类:(按子查询出现的位置分)
1、select后面,
要求:子查询结果为单行单列(标量子查询)
2、from 后面
要求:子查询结果可以为多行多列
3、where或者having后面(重要)
要求:子查询结果必须为单列 (分为单行子查询 、多行子查询)
4、exists 后面:
要求:子查询结果必须为单列(相关子查询)
特点:
1、子查询放在条件中,一般放在条件的右侧
2、子查询一般放在小括号中
3、子查询的执行优先于主查询
4、单行子查询对应了单行操作符< > <= >= <>
多行子查询对应了多行操作符