黑马程序员-Oracle(第六讲,sql1999)
1、自连接
需求:求出emp表中每个人的名字,以及他的经理人的名字
2、sql语言有两个版本,1992和1999,上面的语法基本都是旧的语法,现在来学习一下新的语法。
看个sql语句:
这是1992的标准,它的缺点是没有将连接条件个过滤条件明显的分开。
同样的效果,看看1999的新语法
3、选出emp表中每个人是哪个部门的
旧sql语句:
新的sql语句不会这么写,它不会将连接条件放在where里面,where里面只放过滤条件。
on指定连接条件。
对于这种等值连接还有一种简单用法,
它的意思是用两个表中deptno相等进行连接,但是这种用法不推荐使用。
4、看看非等值连接的情况
求出emp表中每个人的薪水等级
再看一下三个表连接在一起的情况:
求出emp表中每个人的姓名,所属部门,薪水等级,并且这个人的名字的第二个字母不能是A.
求出emp表中所有人的姓名及其经理的姓名
注意上面选择了13行,因为KING没有经理,那么我们如果也想要将KING选出来呢?即使他没有经理。这时候可以用做外连接。
5、左外连接
会将左边那张表中没有匹配的数据也显示出来
效果一样 left是left outer的简写。
6、右外连接 right outer 可以省略outer
可以看到,在dept中有deptno为40的记录
但是
由于在emp表中没有员工的所属部门是OPERATIONS,所以看不到这个部门,但是现在我想要在结果中显示所有的部门,这就要用到右外连接。
7、全外连接 full join
就是将左边表右边表的所有数据都显示出来