一、传统的连接查询

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

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

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

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

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

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

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

(2)右外连接:同理。

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

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

二、SQL92连接语法

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

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

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

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

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

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

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

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

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

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

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

ORACLE复杂查询之连接查询的更多相关文章

  1. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  2. MSSQLServer基础05(联合查询,连接查询)

    联合结果集union(集合运算符) 集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定.(可以用来连接多个 ...

  3. Mysql的查询语句(联合查询、连接查询、子查询等)

    Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...

  4. mysql查询、子查询、连接查询

    mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...

  5. mysql 子句、子查询、连接查询

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  6. 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过 ...

  7. 图解SQLSERVER联合查询和连接查询的区别

      相信很多人都会用SQLSERVER联合查询和连接查询,但是用起来不一定都得心应手,对于其中的原理可能就模糊不清了,要想很牢固地掌握和运用SQL联合查询和连接查询机制,必须对其根本原理有很清晰认识, ...

  8. mysql的查询、子查询及连接查询

    >>>>>>>>>> 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组). ...

  9. SQL 子查询,连接查询复习

    use lianxi0720 go --创建部门表 create table bumen ( bcode int primary key,--部门编号 bname ), --部门名称 bceo ), ...

随机推荐

  1. CCM和GCM

    分组密码链接-消息认证码--CCM    Counter with CBC-MAC 组成CCM的关键算法是AES加密算法.CTR工作模式和CMAC认证算法,在加密和MAC算法中共用一个密钥K. CCM ...

  2. UNIX网络编程——内网与外网间通信

    QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!!! 一.登 ...

  3. UNIX环境高级编程——信号说明列表

    $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGK ...

  4. Cocos2D:塔防游戏制作之旅(十三)

    让我们看一下Waves.plist文件,你将注意到它包含了3个数组.每一个数组表示一波攻击,也就是一组敌人一起到达闹事.第一个数组包含6个字典.每一个字典定义1个敌人. 在本次教程中,字典只存储敌人应 ...

  5. React Native控件之Listview

    ListView组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. ListView更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,ListView并不立即渲染 ...

  6. C++对象模型(五):The Semantics of Data Data语义学

    本文是<Inside the C++ Object Model>第三章的读书笔记.主要讨论C++ data member的内存布局.这里的data member 包含了class有虚函数时 ...

  7. python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参

    python字典dictionary几个不常用函数例子 一.字典声明 如,d={}; d= {'x':1,'b':2} d1 = dict(x=1,y=2,z=3)     d2 = dict(a=3 ...

  8. Aliyun上Linux服务器挂载数据盘及速度测试

    原始文档来自于阿里云官方文档:  Linux 系统挂载数据盘 铁锚 于 2013年12月19日 根据自己的需要进行整理 操作系统: CentOS 6.3, 平台  : 阿里云 ECS 云服务器 1. ...

  9. Android APP新的“优雅”退出方式--EventBus大显身手

    最近在研究eventBus..很多小伙伴不知道他有什么用.. 前篇介绍了EventBus的基本使用 这里简单举一个例子,就是退出APP 转载请注明出处:http://blog.csdn.net/win ...

  10. SpriteBuilder中粒子发射器的reset on visibility toggle选项解释

    如果选中该选择框,表示粒子发射器将删除所有已存在的粒子当它们的可见状态被代码改变的时候. 如果该选择框没有选中,则发射器将保持产生粒子但不渲染它们(意思是有但你看不到)当它们的可视状态为NO的时候. ...