1.内连接

表名 INNER JOIN 表名 ON 条件

等价于:

FROM 表名, 表名

WHERE 条件

SELECT p.name, pt.name, pt.product_type_id

FROM products p INNER JOIN product_types pt ON p.product_type_id = pt.product_type_id

ORDER BY p.name;

表名 INNER JOIN 表名 USING (属性)

注意:在SELECT中的属性不能加前缀,如pt.product_type_id会报错

SELECT p.name, pt.name, product_type_id

FROM products p INNER JOIN product_types pt USING (product_type_id)

ORDER BY p.name;

多于两个表的内连接

SELECT c.first_name, c.last_name, p.name AS PRODUCT, pt.name AS TYPE

FROM customers c, products p, product_types pt, purchases pr

WHERE c.customer_id = pr.customer_id

AND pr.product_id = p.product_id

AND p.product_type_id = pt.product_type_id

ORDER BY p.name;

用INNER JOIN USING重写

SELECT c.first_name, c.last_name, p.name AS PRODUCT, pt.name AS TYPE

FROM customers c INNER JOIN purchases pr

USING (customer_id)

INNER JOIN products p

USING (product_id)

INNER JOIN product_types pt

USING (product_type_id)

ORDER BY p.name;

2. 外连接

SQL/92执行外连接

语法:FROM table1 {LEFT | RIGHT | full} OUTER JOIN table2

left、right分别表左、右连接

full表全连接,这是+操作符无法做到的

SELECT p.name, pt.name

FROM products p, product_types pt

WHERE p.product_type_id = pt.product_type_id (+)

ORDER BY p.name;

上面的左连接改成SQL/92形式则为:

SELECT p.name, pt.name

FROM products p LEFT OUTER JOIN product_types pt USING (product_type_id)

ORDER BY p.name;

SELECT p.name, pt.name

FROM products p, product_types pt

WHERE p.product_type_id = pt.product_type_id (+)

ORDER BY p.name;

上面的右连接改成SQL/92形式则为:

SELECT p.name, pt.name

FROM products p RIGHT OUTER JOIN product_types pt USING (product_type_id)

ORDER BY p.name;

3.自连接

使用SQL/92执行自连接

与内连接一样,只是table1与table2是同一表。

4.交叉连接

使用SQL/92进行交叉连接:

语法:FROM talbe1 CROSS JOIN table2

SELECT *

FROM products, product_types;

可以改成:

SELECT *

FROM products CROSS JOIN product_types;


转载:

原文地址:

http://www.cnblogs.com/visayafan/archive/2011/10/20/2219612.html

【Oracle】SQL/92 执行多个表的连接的更多相关文章

  1. Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...

  2. Oracle SQL语句执行过程

    前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...

  3. Oracle SQL语句执行步骤

    转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...

  4. Oracle sql语句执行顺序(转)

    from: http://blog.csdn.net/lailai186/article/details/12612263 sql语法的分析是从右到左 一.sql语句的执行步骤:1)语法分析,分析语句 ...

  5. Oracle SQL性能优化 - 根据大表关联更新小表

    需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的updat ...

  6. (转) Oracle SQL优化必要的全表扫描思路分析

    大多数情况下,我们需要避免SQL在查询时进行全表扫描(FTS),但是对于必须需要进行全表扫描的情况,也可以进行一些优化处理. 即使全表扫描是检索所需数据的唯一可行方法,仍然有多种方法来提升查询性能.优 ...

  7. 学习如何看懂SQL Server执行计划(三)——连接查询篇

    三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多嵌套循环可以理解为就是两层For循环,外 ...

  8. oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection

    直接上图比较直观 tips one:先看看自己 控制台的 SQLplus 可以登录不 可以直接往下面走 ,如果不可以就现在服务里面找到 Oracle 开头的服务启动就好 实在不会可以百度 注:由于该步 ...

  9. 关于Oracle SQL/82标准和SQL/92标准

    在ORACLE9i之前,oracle语法基础是SQL/86标准,9i及之后的版本中支持SQL/92标准.基表信息:products.purchases和product_types SQL> se ...

随机推荐

  1. 各个JDK版本新语法糖

    java5语法扩充 自动装箱.泛型.动态注解.枚举.可变长参数.循环遍历等语法 JDK7 fork/join jdk8  二进制数的原生支持.switch语句中支持string <>操作符 ...

  2. tabControl组件的吸顶效果

    最开始,还没有使用better-scroll插件的时候,直接在class中设定了一定的position为sticky,设置一定的top达成了效果.但是,使用better-scroll组件后,这些属性就 ...

  3. java之volatile

    一.谈谈对volatile的理解 volatile是java虚拟机提供的轻量级的同步机制 保证可见性.不保证原子性.禁止指令重排 1.可见性理解:所有线程存放都是主内存的副本(比如某个变量值为25), ...

  4. 项目实战--Stream流实现字符串拼接

    需求说明 概述:前端页面查询列表中有个"二级类目"的多选下拉框,用户选择二级类目后,需要从后台数据库查询条件内的数据.  目标:将前端页面传入后端的字符串例如"女性护理, ...

  5. 浅谈TypeScript,配置文件以及数据类型

    TypeScript在javaScript基础上多了一些拓展特性,多出来的是一些类型系统以及对ES6新特性的支持最终会编译成原始的javaScript, 文件名以.ts结尾,编译过后.js结尾,在an ...

  6. 【Java集合】HashSet源码解析以及HashSet与HashMap的区别

    HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...

  7. Head First 设计模式 —— 12. 状态 (State) 模式

    思考题 public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; fi ...

  8. SQLI-LABS复现通关

    sql-lab 复现通关(深入学习) less-1 基于错误的单引号字符串 - 正常访问 127.0.0.1/?id=1 - 添加 ' 返回报错信息:You have an error in your ...

  9. 【MySQL】使用WHERE子句 - 过滤数据

    第6章 过滤数据 文章目录 第6章 过滤数据 1.使用WHERE子句 2.WHERE子句操作符 2.1.检查单个值 2.2.不匹配检查 2.3.范围值检查 2.4.空值检查 3.小结 简单记录 - M ...

  10. Unsafe Filedownload - Pikachu

    概述: 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件r ...