sql199语法
- 语法
select 查询列表
from 表1 【别名】 【连接类型】
join 表2 【别名】
on 连接条件
【 where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】 - 连接类型
–内连接 inner
–外连接
左外:left 【outer】
右外:rigth 【outer】
全外:full 【outer】
–交叉连接 cross
内连接
- 语法
select 查询列表
from 表1 别名 inner
join 表2 别名
on 连接条件 - 分类
等值连接
非等值连接
自连接 - 特点
1.添加排序,分组,筛选
2.inner可以省略
3.筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读。
4.inner join连接和和sql192语法的等值连接效果是一样的,都是查询多表的交集。
-案例
操作表
案例1:查询员工名,部门名(等值连接)
案例2:查询名字中包含张的员工和工种名称(添加筛选条件)(等值连接)
案例3:查询哪个部门的员工个数>3的部门名称和员工个数,并按个数降序(添加排序)(等值连接)
案例4:查询员工,部门名,工种名(等值连接)
案例5:查询员工的工资级别(非等值连接)
案例6:查询工资级别的个数>2的个数,并且按工资级别降序(非等值连接)
案例7:查询员工名字,上级名字(自连接)
外连接
- 语法
select 查询列表
from 表1 别名 outer
(left|right) join 表2 别名
on 连接条件 - 应用场景:用于查询一个表中有,另一个表没有的记录
- 特点
1.外连接查询分主从表。
2.外连接的查询结果为主表中的所有记录
如果从表中有和它匹配的,则显示匹配的值
如果从表中没有和它匹配的,则显示null
外连接查询结果=内连接结果+主表中有而从表没有的记录
3.区分主从表:
左外连接:left join左边的是主表
右外连接:right join右边的是主表
4.左外和右外交换两个表的顺序,可以实现同样的效果 - 案例
案例1:查询哪个员工没有部门
左连接
右连接
交叉连接
- 语法
select 查询列表
from 表1 别名 cross
join 表2 别名
on 连接条件 - 特点:
1.交叉连接就是笛卡儿积
案例:
案例1:
总结连接查询
- sql192和sql199
- 功能:sql199支持的较多
- 可读性:sql199实现连接条件和筛选条件的分离,可读性较高。