一、传统的连接查询

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. 新手学python(2):C语言调用完成数据库操作

    继续介绍本人的python学习过程.本节介绍如何利用python调用c代码.内容还是基于音乐信息提取的过程,架构如图一.Python调用c实现的功能是利用python访问c语言完成mysql数据库操作 ...

  2. Ubuntu 12.04: How to enable root login

    1. vi /etc/lightdm/lightdm.conf and add following modifications. greeter-show-manual-login=true allo ...

  3. 一台电脑上同启动两个Tomcat的方式,windows/Linux配置。

     安装两个jdk,一个JDK路径在:C:\ProgramFiles (x86)\Java\jdk1.7.0_25,另外一个JDK的路径在E:\UCMSServer\j2sdk 在环境变量里并设置J ...

  4. Ubuntu启动eclipse问题

    Ubuntu启动eclipse问题 在Ubuntu安装eclipse后 可以在终端顺利启动eclipse:进入eclipse目录,在终端输入命令 ./eclipse > /dev/null 2& ...

  5. 【IOS 开发】Object - C 语法 之 类型转换

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3913507 ...

  6. OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量

    使用OpenCV可以提分别提取显示一张图片(或者视频)的R,G,B颜色分量.效果如下. 原图: R: G: B: 示例代码如下,貌似很久以前网上找的的,逻辑很清晰,就是把R,G,B三个分量分开,然后显 ...

  7. Python学习笔记 - dict和set

    dict #!/usr/bin/env python3 # -*- coding: utf-8 -*- #dict >>> d = {'Michael': 95, 'Bob': 75 ...

  8. ORACLE sid,pid,spid总结

    概念上:1.spid (system process id)  是操作系统层面的进程id .2.pid(process id)  这个是基于oracle的进程id个人理解为就是oracle给自己的进程 ...

  9. [Ext.Net]客户关系管理系统

    本人在企业中非专业人士,交流学习. 1.登录 2.系统主界面 3.用户与角色 3.菜单管理 4.角色与授权 5.登陆日志 6.简易工作流 7.客户分类 8.客户管理 9.报价管理 业务员反馈 报价明细 ...

  10. Bootstrap 简介: 创建响应式、移动项目的工具

    原文链接: Introduction to Bootstrap: A Tool for Building Responsive, Mobile-First Projects 下载: 示例代码Boots ...