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. javascript 匿名函数的理解(转)

    原网址 http://www.jb51.net/article/21948.htm javascript 匿名函数的理解(透彻版) 代码如下: (function(){ //这里忽略jQuery所有实 ...

  2. Date、SimpleDateFormat以及Calendar

    Date类 毫秒值 java.util.Date:表示日期和时间的类 类Date表示特定的瞬间,精确到毫秒 日期转毫秒,号秒转日期 中国属于东八区,会把事件增加8个小时 1天 = 4 * 60 * 6 ...

  3. Debian10_Centos8_fail2ban

    Debian10_Centos8_fail2ban 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-11-7. Debian-10 的 fail2ban 支持 ipv6.防火墙内核是 ...

  4. 免费、开源的基于tp5的快速开发框架

    HisiPHP 系统官网:https://www.hisiphp.com/ 后台体验:http://v2.demo.hisiphp.com/admin.php/system/publics/index ...

  5. LeetCode94 二叉树的中序遍历

    给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?       /** * ...

  6. Educational Codeforces Round 102 (Rated for Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出一个数组\(a\)并能进行一个操作使得数组元素更改为数组任意其他两元素之和,问是否可以让数组元素全部小于等于\(d\) 解析: 排序后判断最大值是否小于等于 ...

  7. shell 脚本安装Tomcat和java

    脚本安装Tomcat和java#!/bin/bash##SCRIPT:install_jdk-8u181-linux-x64_apache-tomcat-8.0.53#AUTHOR:Shinyinfo ...

  8. PAT甲级练习 1087 All Roads Lead to Rome (30分) 字符串hash + dijkstra

    题目分析: 这题我在写的时候在PTA提交能过但是在牛客网就WA了一个点,先写一下思路留个坑 这题的简单来说就是需要找一条最短路->最开心->点最少(平均幸福指数自然就高了),由于本题给出的 ...

  9. Linux学习笔记 | 配置Samba

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...

  10. 跟我一起学Redis之加个哨兵让主从复制更加高可用

    前言 主从复制的实现在上一篇已经分享过,虽然主从复制本身的确让读写分离更加高效,但是对于整体高可用存在很大的劣势:当主节点宕机了之后还需要人为重新进行主从关系配置:这不是开玩笑嘛,这样人为干预,故障恢 ...