内连接: 是显示两张表存在对应关系的数据,无对应关系的数据不显示
语法: 表1 inner jion 表2 on 表1.字段 = 表2.字段;
select * from goods inner join category on goods.typeId = category.typeId;
左连接: 以 left jion 关键字为界,关键字左侧的表信息全部显示出来,而关键字右侧的表的信息有对应部分的显示,无对应部分以null占位填充;
右连接: 以right jion 关键字为界 ;关键字右侧表的信息全部显示,而关键字左侧表信息有对应关系的部分显示;无对应部分以null占位填充;
主要解决: 3张及以上表 进行连接查询
自关联: 只有1张表,表中最少有两列字段具备对应关系;
原理: 通过起别名的方式,将1张表变为2张表,通过对应字段的关系,进行条件对比实现连接查询
例:
select * from areas a1 inner join areas a2 on a1.aid = a2.pid where a1.atitle=' 广东省';
子查询:在一条查询语句中,利用另一条语句作为条件或者数据源,充当条件后的数据源的语句称为子查询语句;
注意: 子查询语句使用,务必使用括号括起来
select * from goods where price > (select avg(price) from goods);
扩展:
一.根据子查询语句返回的结果形式体现可分为4类:
子查询返回的结果是一个值(一行一列),称为: 标量子查询
子查询返回的结果是一列数据(一列多行),称为列子查询
子查询返回的结果是一行数据(一行多列);称为:行子查询
子查询返回的结果是多行多列(相当于一张表);称为:表级子查询
二. 子查询关键字
between
in: 范围
some/any:任意一个
all: 全部
1. =all :相当于这条语句查询出来的商品价格同时满足后面条件中的多个价格,实际中一般是不满足的;
2. != 或 <> all: 不等于 ;查询条件之外的产品,两条语句查出来的结果一样