ORACLE复杂查询之连接查询

摘要:
AND等)。自然连接的关键字是natural[INER]JOIN,它基于两个表中同名的所有字段建立等效连接。此外,ON子句的等效联接不会删除查询结果集中的重复字段,但在USING或NATURAL中会自动删除重复字段。

一、传统的连接查询

1、交叉连接:返回笛卡尔积

ORACLE复杂查询之连接查询第1张

 

  WHERE中限定查询条件,可以预先过滤掉掉不符合条件的记录,返回的只是两个表中剩余记录(符合条件的记录)的笛卡尔积

2、内连接:参与连接的表地位平等,不分主次。两表均可能有丢弃。

(1)等值连接:表间记录的连接是通过相等的字段值为条件建立起来的。

ORACLE复杂查询之连接查询第2张

(2)非等值连接:与等值连接类似。如果表间记录的连接条件使用除“=”以外的其它比较运算符(>,>=,<,<=,!>,!<,<>以及BETWEEN…AND等)比较被连接的字段值。注意“BETWEEN (较小值)AND (较大值)”对应闭区间,

3、外连接:参与连接的表分主次。主表不丢弃,从表可能有丢弃。

(1)左外连接:主表在左,从表一侧(右侧)使用“(+)”

ORACLE复杂查询之连接查询第3张

(2)右外连接:同理。

4、自连接:同一个表上的连接查询,令一个表与其自身连接。

注:SELECT子句中的字段别名可以中间使用AS,可以省略;但表名与表别名之间不允许使用AS。

二、SQL92连接语法

  在SQL92标准中,除支持前述传统的连接语法之外,还定义了一组新的连接语法体系--在FROM子句中指定连接条件(之前是在WHERE子句中),二者功能几乎完全相互覆盖,只是语法格式有所不同、且SQL92中增加了一种全外连接。SQL92连接语法基本格式如下:

ORACLE复杂查询之连接查询第4张

  注意:连接条件仍是由被连接表中的字段和比较运算符、逻辑运算符等构成的表达式,使用关键字ON或USING等。

  连接类型可分为交叉连接、内连接、外连接三种,并可再细分(下图):

ORACLE复杂查询之连接查询第5张

(1)交叉连接的关键字是CROSS JOIN,返回笛卡尔积。例:

ORACLE复杂查询之连接查询第6张

(2)等值连接、非等值连接用关键字:[INNER] JOIN,并且用ON代替WHERE指定连接条件及其他查询限定条件;

ORACLE复杂查询之连接查询第7张

  等值连接可以使用USING子句指定用于等值连接的字段(参照字段)。

ORACLE复杂查询之连接查询第8张

  自然连接的关键字是NATURAL [INNER] JOIN,基于两个表中的全部同名字段建立等值连接。如果类型不一致会出错。

ORACLE复杂查询之连接查询第9张

  注意:USING和NATURAL不允许在参照字段(包括SELECT列表中出现的参照字段)上使用表名或表别名作为前缀。此外,ON子句的等值连接不会去除查询结果集中的重复字段,但USING或NATURAL中则会自动去掉重复字段。例如:

ORACLE复杂查询之连接查询第10张

(3)左外连接(右外连接同理):主表在左,关键字是LEFT [OUTER] JOINON代替WHERE指定连接条件;

ORACLE复杂查询之连接查询第11张

  相当于前述传统方式中的从表侧加入“(+)”:

ORACLE复杂查询之连接查询第12张

  全外连接:关键字是FULL [OUTER] JOINON代替WHERE指定连接条件。

ORACLE复杂查询之连接查询第13张

 

免责声明:文章转载自《ORACLE复杂查询之连接查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker部署Zabbix+Grafana监控git学习简单操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle表中一行记录被锁(行锁,表锁,死锁)

表现形式:可以向表里面save新数据,但是无法跟新某一条数据,update的时候就一直在等待。 Oracle锁表查询和解锁方法 数据库操作语句的分类DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert、delete、updateDCL:数据库控制语言 ,关键字:grant、removeDQL:数据库查询语言,关键字:s...

在windows server 2012中安装完oracle 11 client如何使用

  1.首先要添加监听配置,这样才可以没有报错的连接上服务器,至于如何添加,请自行搜索。   2.打开SQL  Plus连接oracle server端,这里因为是小白,看到命令行界面上来就需要输入用户名密码,很懵,查了一下资料,有一些默认已经存在的用户名和密码,但是尝试了一下并没有登录进去。所以又查询是否有别的方法进行登录。这里我用的方法是: /as ...

C#连接Oracle数据库

实现效果: 处理思路: 使用Oracle.ManagedDataAccess连接Oracle数据库 数据库连接串写在App.config中,用DES算法加密 加解密辅助类: 先用加密方法将数据库连接串进行加密,然后添加到配置文件中,读取配置文件中的连接串后再用解密方法解密。 程序源码: https://gitee.com/soulsjie/CS...

数据库——Oracle(增删改查,单行函数,多行函数,多表查询)

Oracle简介 1、sqlplus连接远程Oracle命令 sqlplus(需要设置环境变量) scott(用户名)/5456(密码)@192.168.230.128:1521(IP)/orcl(数据库名)  --如果是本地的Oracle,@后面的不用写 2、查看当前用户 show user  --sqlplus命令 3、查看当前用户下的表 select...

ORACLE 变量的定义和使用

在程序中定义变量、常量和参数时,则必须要为它们指定PL/SQL数据类型。在编写PL/SQL程序时,可以使用标量(Scalar)类型、复合(Composite)类型、参照(Reference)类型和LOB(Large Object)类型等四种类型。 在PL/SQL中用的最多的就是标量变量,当定义标量变量时,必须要指定标题数据类型,标题数据类型一般包括:数字类...

[Oracle]

My Oralce Linux 6.5 is running on VirtualBox. Basic settings is 4G memory, 50G hard-disk, auto partition when install OL6.5. ** Following series of operations need root privilege...