Oracle从多个表中获取数据
- 1.1 【表连接】
- 1.2 【笛卡尔积:交叉连接】
- 1.3 【使用表的别名】
- 1.4 【连接的类型】
- 1.5 【等连接】
- 1.5.1 自然连接
- 1.6 【非等连接】
- 1.7 【外连接】
- 1.7.1 【环境准备】
- 1.7.2 【左外连接】
- 1.7.3 【右外连接】
- 1.7.4 【全外连接】
- 1.8 【自连接】
- 1.9 【多表关联】
- 【总结】
1.1 【表连接】
需求:查询员工的姓名、部门号、部门名称。
注意:同一列名多表使用时,要写上表名做前缀。
列定义模糊
1.2 【笛卡尔积:交叉连接】
表连接不要忘记写 **where **条件。
1.3 【使用表的别名】
1.4 【连接的类型】
分类标准不同
1.5 【等连接】
传统 **Oracle **连接语法:
**SQL1999 **语法(标准 SQL)
连接列名称相同时,可以使用 using,但列名前不能加修饰
1.5.1 自然连接
1.6 【非等连接】
需求:查询员工的工资以及对应的工资等级
1.7 【外连接】
1.7.1 【环境准备】
1.7.2 【左外连接】
需求:列出所有员工及其对应部门信息, 包括没有部门的员工。
传统 **Oracle **连接语法:
**SQL:1999 **语法:
1.7.3 【右外连接】
需求:列出所有部门及其对应的员工信息, 包括没有员工的部门。
传统 **Oracle **连接语法
**SQL:1999 **语法:
1.7.4 【全外连接】
需求:查询员工对应的部门信息, 包括没有部门的员工和没有员工的部门
1.8 【自连接】
(表里有从属关系)
需求:查询员工的姓名以及其经理的姓名
员工的经理号 **= **经理的员工号
1.9 【多表关联】
需求:查询员工的姓名、部门名称、工资等级
【总结】
等值连接、不等值连接、外连接、自连接
笛卡尔积:忽略了连接条件
左外连接:列出所有员工的部门信息,包括没有部门的员工。
传统 **oracle **连接语法
**SQL:1999 **连接语法
右外连接:列出所有部门的员工信息,包括没有员工的部门。
全外连接
注意:同一个外连接查询需求,使用左外连接或者右外连接都可以实现!左外连接是把左边表里数据显示完整,包括不符合连接条件的行;
右外连接是把右边表里数据显示完整,包括不符合连接条件的行。
如何区分左右:传统 **oracle **连接语法看 **where **子句中比较符,标准 **SQL **看 **from **子句中 join。
【OCP】
051-7
join using/join on
051-121 表连接
join using / natural join