Oracle多表查询

从多个表中获取数据

select last_name, department_name
from employees, departments
演示笛卡尔集的错误情况:
select count(employee_id) from employees;
假设输出107行
select count(department_id)from departments;
假设输出27行
select 107*27 from dual;
笛卡尔集
笛卡尔集会在下面条件下产生:
省略连接条件
连接条件无效
所有表中的所有行互相连接
 
为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。
Oracle 连接
使用连接在多个表中查询数据。

    •  在 WHERE 子句中写入连接条件。
    • 在表中有相同列时,在列名之前加上表名前缀

区分重复的列名
 
使用表名前缀在多个表中区分相同的列。
 
在不同表中具有相同列名的列可以用表的别名加以区分。
 
 
表的别名
使用别名可以简化查询。
使用表名前缀可以提高执行效率。

 内连接和外连接(1)
内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL). 外连接的 WHERE 子句条件类似于内部连接, 但连接条件中没有匹配行的表的列后面要加外连接运算符, 即用圆括号括起来的加号(+). 

 

posted @ 2018-01-14 20:24  journeyIT  阅读(8)  评论(0编辑  收藏  举报