`
tangzililiang
  • 浏览: 16978 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

关于oracle外连接的若干问题

 
阅读更多
关于oracle外连接的若干问题
内连接(inner join)、全连接(full join)、左连接(left join)、右连接(right join)

Oracle的左连接和右连接
PL-SQL中,左连接和右连接以如下方式来实现
查看如下语句:
SELECT emp_name, dept_name FORM Employee, Department   WHERE Employee.emp_deptid(+) = Department.deptid
此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,
无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现。

反之:
SELECT emp_name, dept_name FORM Employee, Department WHERE Employee.emp_deptid = Department.deptid(+)
则是左连接,无论这个员工有没有一个能在Department表中得到匹配的部门号,这个员工的记录都会被显示

一般的相等连接:
select * from a, b where a.id = b.id;
这个就属于内连接。
 
对于外连接:
Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN 
 
LEFT OUTER JOIN:左外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
LEFT OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
等价于 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e, departments d 
WHERE e.department_id=d.department_id(+) 
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。 
 
RIGHT OUTER JOIN:右外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
RIGHT OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
等价于 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e, departments d 
WHERE e.department_id(+)=d.department_id 
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 
 
FULL OUTER JOIN:全外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
FULL OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录

分享到:
评论

相关推荐

    Windows Server 2016 Oracle 12C安装连接的若干问题处置方法

    单位技改项目新上HP服务器,系统windows server2016,数据库Oracle 12c企业版,因为12c版本变动较多加之没有12c的维护经验,安装完后发现很多连接使用问题,通过参考网上各种问题解决方法和亲自试验,捣鼓了两天终于...

    关于Oracle使用SQL_Plus或者PL_SQL连接失败的使用若干经验

    oracle plsql sqlplus 连接失败 监听程序当前无法识别连接描述符中请求的服务 无监听程序 常见错误ora-12518 ora-12514 ora-12541的检查方法

    oracle 数据库小工具源代码

    这是早年间因为经常要在若干台计算机间处理oracle数据,一怒之下写了这个小工具。可以实现建立表空间、创建用户、导入、导出、删除用户、删除表空间等功能。并且可以保存为方案,方便调用。功能也挺简单,但非常实用...

    oracle数据库经典题目

    PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为...

    SybaseToad:小巧的oracle数据库查询修改工具

    5,可以连接多种数据库,尤其是oracle可以支持oracle客户端和无客户端两种情况。 6,数据导出,可以导出成为(insert...)的模式,方便数据库脚本的提取。 7,操作习惯为了和toad,plsql尽量保持一致,可以选择...

    Oracle数据库安全策略分析 (三)第1/2页

    正在看的ORACLE教程是:Oracle数据库安全策略分析 (三)。 数据的安全性策略: 数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该有一...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    如何保持Oracle数据库优良性能

    所谓分区就是动态地将表中记录分离到若干不同的表空间上,使数据在物理上被分割开来,便于维护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图,使其在逻辑上仍以一个整体出现。

    如何保持Oracle数据库的优良性能

    如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。   一、分区  根据实际经验,在一个大数据库中,数据空间的绝大多数是被少量的表所占有。为了...

    Java数据库同步系统(Web平台)

    同步不同数据库之间的数据,比如postgresql到oracle,oracle到oracle,不限于此,支持自己配置。 实现思路: 在主线程中创建若干子线程,每个子线程分别用来同步一张数据表,提供web页面,监控各个子线程运行状况,...

    SybaseToad7.0

    5,可以连接多种数据库,尤其是oracle可以支持oracle客户端和无客户端两种情况。 6,数据导出,可以导出成为(insert...)的模式,方便数据库脚本的提取。 7,操作习惯为了和toad,plsql尽量保持...

    Oracle中的Connect/session和process的区别及关系介绍

    Session:在计算机中,尤其是在网络应用中,称为“会话”。 Session:在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔... 一个session也可以存在若干个process中,并行同样是一个session对应一

    5.4空间数据库管理系统.pdf

    的方案——关系表 SDO_GEOMETRY对象类型 每个图层再被分解为若干 几何实体——每一行记录 几何实体又被分解成点、 线、面等基本元素 Oracle中的栅格数据存储 GeoRaster 存储、索引、查询、分析空间GeoRaster栅格数据...

    基于VB6开发的轻量级数据库查询客户端工具(附源码和安装)

    --修改了连接ORACLE的连接字符串,要求客户端安装ODAC组件(OLEDB); --数据库下拉列表默认上次选择的数据项。 V2.0.0 --支持Sybase平台,要求客户端安装Sybase OLEDB组件; V1.0.0 --支持SQL Server平台,...

    数据库系统基础知识.doc

    它是按一定的结构和组织方式存储在计算机外 部存储介质上的,有结构,可共享的相互关联的数据集合。 数据库中的数据具有结构化好,冗余度小,数据独立性高,共享性高和易于扩充等特点 。 2) 数据库管理系统...

    经典全面的SQL语句大全

     右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。  C:full outer join:  全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。  其次,大家来看一些不错的sql...

    数据库系统原理(04735-2018年版)-数据库系统概述笔记.doc

    关系数据库 关系数据库概述 美国IBM公司的E.F.Codd 1970年提出关系数据模型 关系数据库应用数学方法来处理数据库中的数据 典型的实验系统: System R、University INGRES 典型的应用系统: ORACLE、SYBASE、INFORMIX...

    jpivot学习总结.doc

    <jp:mondrianQuery dataSource="" id="query01" jdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcUrl="jdbc:oracle:thin:ngykt/ngyktadmin@172.16.46.241:1521:orcl10" catalogUri="/WEB-INF/queries/feeSchema....

    支持多数据库的ORM框架ef-orm.zip

    并且具备若干企业级的应用特性,如分库分表、JTA事务等。 代码生成插件for eclipse(请在eclipse中Help/Install new software后输入地址并安装)http://geequery.github.io/plugins/1.3.x/特点一 EF的设计的一个...

Global site tag (gtag.js) - Google Analytics