2.6、内连接之非等值连接
例:找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级?
select
e.(工名),e.(薪资),s.(薪资等级)
from
(员工表) e
inner join
(薪资等级表) s
on
e.(员工薪资) between s.(最低薪资) and s.(最高薪资);
// 条件不是一个等量关系,称为非等值连接。
2.7、内连接之自连接
例:查询员工的上级领导,要求显示员工名和对应的领导名?
自连接:
把一张表看作两张表来查询
员工表李包含了 领导的员工编号 与 每个员工的 上级领导编号
把一张员工表看作两张表,使用别名区分
第一张:(员工表) a 员工
第二章:(员工表) b 领导表
select
a.(名称) as ‘员工名’,b.(名称) as ‘领导名’;
from
(员工表) a
inner join
(员工表) b
on
a.(员工领导编号) = b.(领导的员工编号);
重点技巧:
一张表看做两张表。
2.8、外连接
外连接(右外连接):
select
e.(名称),d.(名称)
from
(员工表) e
right outer join // outer 是可以省略的,带着可读性强。
(部门表) d
on
e.(员工表部门) = d.(部门表部门);
right代表什么:
表示将join关键字右边的这张表看成主表,主要是为了将
这张表的数据全部查询出来,捎带着关联查询左边的表。
在外连接当中,两张表连接,产生了主次关系。
外连接(左外连接):
select
e.(名称),d.(名称)
from
(员工表) e
left outer join // outer 是可以省略的,带着可读性强。
(部门表) d
on
e.(员工表部门) = d.(部门表部门);
总结:
带有right的是右外连接,又叫做右连接。
带有left的是左外连接,又叫做左连接。
任何一个右连接都有左连接的写法。
任何一个左连接都有右连接的写法。
2.9、三,四张表连接
语法:
select
…
from
a
join
b
on
a和b的连接条件
join
c
on
a和c的连接条件
right join
d
on
a和d的连接条件
一条SQL中内连接和外连接可以混合。都可以出现!
3、子查询
3.1、什么是子查询
select语句中嵌套select语句,被嵌套的select语句称为子查询。
3.2、子查询都可以出现在哪里
select
…(select).
from
…(select).
where
…(select).
可以出现在 select 后面
可以出现在 from 后面
可以出现在 where 后面
3.3、where 子句中的子查询
例:找出比最低工资高的员工姓名和工资?以下错误案例:
select
(姓名),(工资)
from
(员工表)
where
(工资) > min(工资);
以上是错误的,因为在 where 子句中不能直接使用分组函数,可以使用子查询
先分析题目:
第一步:查询最低工资是多少
select min(工资) from (表);
第二步:找出>最低工资的
select (姓名),(工资) from (员工表) where (工资) > (第一步的结果)//最低工资
第三