Oracle的外连接(outer join):可以分为:左连接(left outer join),右连接(right outer join),全连接(full outer join)
1,左连接:
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的员工记录。
2,右连接:
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;
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
3,全连接:
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的员工记录和没有任何员工的部门记录。
其实:外连接就是查两张表 左连接就是左边的表全有值,右边表的值可以为空(+)
右连接是左边表值可以为空(+) 右边表的值全有
全连接是左连接和右连接的并集 好像是这个符号(U)
内连接是左连接和右连接的交集 。。。
注:+号在=号左边叫右连接,+号在=右边叫做左连接
注:左连接或右连接,也可以加where条件:
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)
where e.sex='1' and e.age > 30 ;
其余连接方式:
交叉连接(cross join),查出的表的笛卡尔积 eg: select * from A cross join B (A表有M行,B表有N行,结果是M*N行)。
自然连接(natural join):
自然连接,natural join 会根据列名,自动创建连接,省略where语句,避免笛卡尔积的出现
eg: select empno,ename,sal,deptno,loc from emp natural join dept;
using :表示与指定的列相关联。
eg: select e.ename,e.sal,deptno,d.loc from emp e join dept d using (deptno) where deptno=20;
注:被using 子句所引用的列,在sql 语句中的任何地方不能使用表名或者别名作为前缀。
PS :做外连接的时候,where 条件中不可以加从表的条件,需将从表做个子查询,做成另外一个表。
eg :select t.acctype, nvl(b.name,t.acctype) as name
from biacciccardmaptb t, dictcodesettb b
where b.category = '账户类型'
and t.acctype=b.code(+)
and t.iccardno = '1000751090001385' --这种做法是错误的
需要以下的做法:
select t.acctype, nvl(b.name,t.acctype) as name
from biacciccardmaptb t, (select * from dictcodesettb where category = '账户类型' )b
where t.acctype=b.code(+)
and t.iccardno = '1000751090001385'
分享到:
相关推荐
标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...
通过细致地调整Oracle数据库的`pga_aggregate_target`、`processes`、`sessions`参数,以及优化`LISTENER.ORA`文件和操作系统配置,可以有效解决Oracle连接数问题,提升数据库的并发处理能力。这些操作需要根据具体...
Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具...
"Oracle 连接字符串多种方法" Oracle 连接字符串是指连接 Oracle 数据库的字符串书写方法,本文总结了多种连接 Oracle 数据库的字符串书写方法。 一、标准连接字符串 标准连接字符串是最基本的连接字符串格式,...
"oracle连接包"可能指的是Oracle的ojdbc驱动,例如`ojdbc8.jar`或`ojdbc7.jar`等,这些驱动包允许Java应用通过JDBC API与Oracle数据库建立连接。将这个连接包放入项目的`lib`目录下,意味着它是项目运行时的依赖库,...
Oracle连接常见问题 Oracle连接常见问题
在本场景中,我们关注的是一个名为"C#中oracle连接数据库的封装类"的主题,这个主题涉及到创建一个名为`DbHelperOra.cs`的类,用于简化与Oracle数据库的交互。这种封装可以提高代码的可读性和复用性,减少直接处理...
标题:“Oracle 连接 DB2 数据库的详细步骤” 本文将详细介绍如何在 Oracle 环境中配置和连接到 DB2 数据库,包括获取必要的信息、配置 ODBC 数据源、修改 Oracle 相关配置文件以及验证连接。以下是一步步的详细...
在WebSphere环境下配置Oracle连接池是一项重要的任务,它能够显著提高应用程序的性能和响应速度。连接池技术可以有效管理数据库连接资源,避免频繁创建和销毁连接带来的性能开销。本文将详细介绍在WebSphere应用...
非常好用的oracle连接工具 ob10(免安装已破解),方便导入导出,比较明了,跟pl/sql可以媲美的哦。
为了与Oracle数据库进行交互,开发者通常需要一个数据库驱动程序,这就是"Oracle连接数据库的驱动包"的作用。这个驱动包使得Java应用程序能够通过JDBC(Java Database Connectivity)接口与Oracle数据库建立连接,...
【异构服务提高Oracle连接异种数据源能力】 在企业环境中,由于历史发展和业务需求,往往存在多种数据库平台并存的情况,每种平台都承载着相应的应用系统。随着业务的扩展,如何在不干扰现有应用的情况下高效整合...
标题中的“64位PLSQL免安装Oracle连接工具”指的是一个专为64位操作系统设计的,无需完整安装Oracle数据库就能使用的PL/SQL Developer(PLSQL)连接工具。这个工具通常依赖于Oracle的Instant Client,它是一个轻量级...
标题“Oracle连接查询SQL性能测试”涉及的是数据库管理和优化领域,特别是针对Oracle数据库系统的SQL查询性能分析。在Oracle中,连接查询(JOINs)是整合多个表数据的关键操作,其性能直接影响到数据库的整体效率。...
在IT领域,尤其是在数据库管理与运维中,遇到“Oracle连接失败”的情况是常见的技术挑战之一。本文将深入探讨这一问题,特别是聚焦于标题与描述中提及的“ORA-12560:TNS:协议适配器错误”,并提供详细的解决方案。 ...
Oracle 连接配置是一种常用的数据库连接方式,它允许用户通过指定的连接字符串连接到 Oracle 数据库中。在本文中,我们将详细介绍 Oracle 连接配置的步骤和注意事项。 连接字符串的组成 Oracle 连接字符串通常由三...
.net oracle 连接测试小程序,包括oracleclient,oledb等连接方式,framework4.0开发,适应于oracle 8i 9i 10g 11g
在描述中提到的"delphi ODAC oracle 连接控件",实际上指的是ODAC中的TOracleConnection组件,它是连接Oracle数据库的关键部分。 1. **ODAC概述**: ODAC是Devart公司开发的,旨在为Delphi和C++Builder开发者提供...
本篇将详细介绍C#中连接Oracle数据库的方法,包括所需的组件、连接字符串的构建以及使用ADO.NET进行数据操作的基本步骤。 首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data ...