Oracle高级查询——多表连接

2.1 多表查询

 用一个连接从多个表中获取数据

 

 同一列名多表使用时要写上表名做前缀,也可以使用别名代替做前缀。

2.2 笛卡尔积

 列数等于各列数相加,行数等于各行数相乘;

在实际运行环境下,应避免使用笛卡儿积全集;为了避免笛卡尔积,可以在where加入有效的连接条件;

笛卡尔积中的连接条件至少有n-1个,n代表所连接的表的个数

2.3 等值连接

2.4 不等值连接

连接条件不是等号

2.5 外联接

 通过外联接,把对于连接条件不成立的记录任然包含在最后的结果中;

左外连接:当连接条件不成立时,等号左边的表依然被包含;是在等号右边加上“(+)”;

右外联接:当连接条件不成立时,等号右边的表任然被包含;是在等号左边加上“(+)”;

例如:按部门统计员工人数,显示:部门号,部门名称,部门人数

2.6 自连接

通过别名,将一张表视为多张表;

自连接存在的隐患:自连接不适合操作大表。自连接会存在笛卡尔积。

2.7 层次连接

层次查询是Oracle中特有的一种单表查询;

使用关键字prior,此关键字代表上一层;

使用start with函数,区别开始于哪一层,即从哪一个根节点开始。此处可以使用该层的值表示,如果是首层,也可使用上一 层为null条件表示。

层次查询中都会有level这个虚拟列,如果要显示,必须在select后面一并查询。






posted @ 2018-04-12 17:37  傲骄鹿先生  阅读(30)  评论(0编辑  收藏  举报