`

ORACLE外连接小结 .

 
阅读更多
//table1和table2为两个测试表 随便插入几条数据
SQL> select * from table1;
ID NAME
---------- --------------------
1 wh
2 wp
3 wq
SQL> select * from table2;
ID NAME
---------- --------------------
4 wr
1 wh
//正常查询
SQL> select a.name,b.name
2 from table1 a,table2 b
3 where a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
//显示出table1中的所有记录 table2中无相应记录则置NULL
SQL> select a.name,b.name
2 from table1 a,table2 b
3 where a.id=b.id(+);
NAME NAME
-------------------- --------------------
wh wh
wq
wp
//显示出table2中的所有记录 table1中无相应记录则置NULL
SQL> select a.name,b.name
2 from table1 a,table2 b
3 where a.id(+)=b.id;
NAME NAME
-------------------- --------------------
wh wh
wr
//呵呵,这里本想尝试一下全外连接,不过使用(+)好像不行
SQL> select a.name,b.name
2 from table1 a,table2 b
3 where a.id(+)=b.id(+);
where a.id(+)=b.id(+)
*
ERROR at line 3:
ORA-01468: a predicate may reference only one outer-joined table
//左外连接
SQL> select a.name,b.name
2 from table1 a
3 left outer join table2 b
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wq
wp
//右外连接
SQL> select a.name,b.name
2 from table1 a
3 right outer join table2 b
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wr
//右外连接
SQL> select a.name,b.name
2 from table2 b
3 right outer join table1 a
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wq
wp
//左外连接
SQL> select a.name,b.name
2 from table2 b
3 left outer join table1 a
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wr
//试一下FULL OUTER JOIN
SQL> select a.name,b.name
2 from table2 b
3 full outer join table1 a
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wr
wq
wp
SQL> select a.name,b.name
2 from table1 a
3 full outer join table2 b
4 on a.id=b.id;
NAME NAME
-------------------- --------------------
wh wh
wq
wp
wr

小结一下

左连接就是左边的表全有值,右边表的值可以为空(+)

右连接是左边表值可以为空(+),右边表的值全有

至于使用OUTER JOIN的方法就稍微直观一些了,LEFT就是显示左边的表的全部内容,RIGHT就是显示右边的表的全部内容,FULL就是两边表内容都全显示。

既然说到这了已经,那么再来看一下自然连接 。

//使用using子句指定两个表相关联的列
//注:被using 子句所引用的列,在sql 语句中的任何地方不能使用表名或者别名作为前缀
SQL> select a.name,b.name
2 from table1 a
3 join table2 b
4 using(id);
NAME NAME
-------------------- --------------------
wh wh
SQL> select name
2 from table1
3 natural join table2;
NAME
--------------------
wh
//这里好像不让指定别名
SQL> select a.name,b.name
2 from table1 a
3 natural join table2 b;
select a.name,b.name
*
ERROR at line 1:
ORA-25155: column used in NATURAL join cannot have qualifier

最后,来看一下交叉连接 ,也就是笛卡尔积 。

下面是几个容易让人误认为不一样的东西,其实不然。

inner join = join

left outer join = left join

right outer join = right join

分享到:
评论

相关推荐

    oracle环境变量学习小结.

    ### Oracle环境变量学习小结 #### 一、Oracle环境变量的重要性及作用 Oracle数据库系统作为全球最流行的数据库管理系统之一,在企业级应用中占有极其重要的地位。为了更好地管理和配置Oracle数据库,Oracle利用了...

    关于Oracle课程小结.docx

    在这个Oracle课程小结中,我们将探讨几个核心概念:DUAL表、NULL值处理以及常用的SQL函数。 首先,DUAL表在Oracle数据库中扮演着特殊的角色。它是一个只有一行一列的系统表,属于SYS模式,并通过PUBLIC SYNONYM公开...

    Oracle课程小结.docx

    例如,LOWER()函数将字符串转换为小写,CONCAT()函数用于连接两个字符串,SUBSTR()函数用于提取字符串的一部分,INSTR()函数查找字符串中特定字符的位置。此外,ROUND()函数用于进行四舍五入,可以指定保留的小数...

    oracle小结.ppt

    本文将根据提供的"oracle小结.ppt"内容,对Oracle数据库系统及其相关知识点进行详细总结。 1. 数据库系统概述: - 数据:描述事物的符号记录,是数据库中的基本元素。 - 数据库:存储在计算机内,有组织且可共享的...

    MSCS+FailSafe ORACLE数据库双机集群做HA小结.doc

    ### MSCS+FailSafe Oracle数据库双机集群实现高可用性(HA)小结 #### 一、概述 本文档旨在总结使用Microsoft Cluster Service (MSCS) 和 FailSafe 技术来构建Oracle数据库双机集群以实现高可用性的过程。通过这种...

    Spring boot连接oracle数据库JDBC配置步骤

    小结 通过以上步骤,我们成功地使用 Spring Boot 连接了 Oracle 数据库,并实现了基本的数据库操作。记住,在配置 `application.properties` 文件时,需要根据自己的数据库实例和账户信息进行修改。

    java连接oracle.txt

    ### 小结 通过上述步骤,我们可以成功地使用 Java 连接到 Oracle 数据库,并执行简单的 SQL 查询操作。需要注意的是,在生产环境中,还需要考虑异常处理、日志记录等细节问题,以确保程序的稳定性和安全性。此外,...

    java调用存储过程小结.pdf

    文档《java调用存储过程小结.pdf》涉及了如何使用Java语言通过JDBC(Java Database Connectivity)API来调用Oracle数据库中的存储过程。这个过程中,重点在于理解Java与数据库交互的基本原理以及如何通过编程方式...

    JAVA调用ORACLE存储过程小结[文].pdf

    创建一个`Connection`对象,然后使用`DriverManager.getConnection()`方法连接到Oracle数据库。接着,通过`Connection`对象创建`CallableStatement`,并设置SQL语句(用`{call adddept(?,?,?)}`表示)。之后,我们为...

    oracle网络配置 tnsnames.ora

    ### 小结 通过合理配置`sqlnet.ora`、`tnsnames.ora`和`listener.ora`这三个文件,可以确保Oracle数据库能够正常地在网络环境中被访问。理解这些配置文件的工作原理对于管理和维护Oracle数据库至关重要。

    ORACLE审计小结

    ### ORACLE审计小结 #### 一、Oracle审计概述 Oracle数据库提供了强大的审计功能,用于监控用户对数据库的操作。审计信息可以保存到操作系统文件中,默认路径是 `$ORACLE_BASE/admin/$ORACLE_SID/adump/`,也可以...

    Oracle网络配置概论.pptx

    五、小结 Oracle 网络配置是 Oracle 数据库服务器与客户端之间的网络连接配置,旨在实现高效、安全的数据交换。 Oracle 网络服务组件、Oracle 网络连接的基本概念、服务器端网络配置和客户端网络配置是 Oracle 网络...

    linux下oracle11g安装.doc

    #### 六、小结 通过以上步骤,可以在 Linux 环境下顺利完成 Oracle 11g R2 数据库的安装。在整个过程中需要注意的是,每一步都需仔细检查和确认,以确保数据库系统的稳定性和安全性。此外,在实际部署环境中,还...

    Ch2-Oracle10g体系结构.ppt

    用户进程是在客户端运行应用程序时启动的,它们通过网络与服务器建立连接并发送SQL语句。服务器进程则包括服务进程,它们负责解析、编译和执行SQL,以及后台进程,如检查点进程、归档日志进程、数据库写入器等,这些...

    mapxtreme for java manager 测试oracle spatial 连接简单图解

    #### 四、小结 通过上述步骤,我们可以有效地测试MapXtreme for Java Manager与Oracle Spatial之间的连接。这不仅有助于确保GIS应用程序的数据层正常工作,还可以为后续的应用开发提供坚实的基础。如果在测试过程中...

    Oracle网上购物平台设计.doc

    7. **设计小结**:总结设计过程中的挑战、解决方案和经验教训,为后续的开发和维护提供参考。 8. **数据库产品的进步**:随着硬件和存储系统的进步,数据库产品不断优化,以满足更高性能和稳定性需求。Oracle数据库...

    ADO.NET小结.doc

    2. **OleDbConnection**: 除了SQL Server,ADO.NET还支持其他数据库系统,如Access和Oracle。`OleDbConnection`是通用数据提供程序,可以用来连接到各种数据源,包括SQL Server,通过设置不同的提供程序(如SQLOLEDB...

    Oracle Form 实战总结.pdf

    #### 四、小结 通过对《Oracle Form 实战总结》的详细分析,我们可以看到文档不仅提供了创建客户化应用的具体步骤,而且还涉及了许多Oracle Forms的核心概念和技术要点。这对于初学者来说是非常宝贵的资料,可以帮助...

    PowerDesigner连接Oracle并且导出数据

    小结 使用 PowerDesigner 连接 Oracle 数据库并且导出数据,可以按照上述步骤进行操作。需要注意的是,服务器名称需要写的是 Oracle 客户端配置的服务名,而不是 IP 地址。 相关知识点 * PowerDesigner 是一种...

Global site tag (gtag.js) - Google Analytics