【Oracle】SQL/92 执行多个表的连接
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 执行多个表的连接的更多相关文章
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- Oracle SQL语句执行过程
前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...
- Oracle SQL语句执行步骤
转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...
- Oracle sql语句执行顺序(转)
from: http://blog.csdn.net/lailai186/article/details/12612263 sql语法的分析是从右到左 一.sql语句的执行步骤:1)语法分析,分析语句 ...
- Oracle SQL性能优化 - 根据大表关联更新小表
需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的updat ...
- (转) Oracle SQL优化必要的全表扫描思路分析
大多数情况下,我们需要避免SQL在查询时进行全表扫描(FTS),但是对于必须需要进行全表扫描的情况,也可以进行一些优化处理. 即使全表扫描是检索所需数据的唯一可行方法,仍然有多种方法来提升查询性能.优 ...
- 学习如何看懂SQL Server执行计划(三)——连接查询篇
三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多嵌套循环可以理解为就是两层For循环,外 ...
- oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection
直接上图比较直观 tips one:先看看自己 控制台的 SQLplus 可以登录不 可以直接往下面走 ,如果不可以就现在服务里面找到 Oracle 开头的服务启动就好 实在不会可以百度 注:由于该步 ...
- 关于Oracle SQL/82标准和SQL/92标准
在ORACLE9i之前,oracle语法基础是SQL/86标准,9i及之后的版本中支持SQL/92标准.基表信息:products.purchases和product_types SQL> se ...
随机推荐
- JavaScript内置可用类型
string,number,boolean,null和undefined,object,symbol(ES6新语法)
- github与svn的区别
github与svn都属于版本控件系统,但是两者不同于,github是分布式的,svn不是分布的是属于集中式的. 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容 ...
- 入门oj 5499: 讲话模式
Description 每个人说话都有口头禅,现给出一个字符串,请求出其中出现次数最多的单词(不区分大小写). Input 输入一行,长度小于等于1048576的字符串输入至少包含一个字母或数字 Ou ...
- 不是RESTful不好,是你姿势有问题
文章来源:https://ningyu1.github.io/site/post/01-restful-design-specifications/ 一. 摘要(Abstract) RESTful A ...
- 解决MySQL Workbench导出低版本MySQL时报错Unknown table ‘column_statistics’ in information_schema的问题
在使用高版本MySQL Workbench或MySQL 8.0+版本提供的mysqldump.exe(实际高版本的MySQL Workbench使用的也是高版本的mysqldump.exe)来导出低于 ...
- node实现文件下载
1.引入fs const fs = require('fs') const path = reqire('path') 2.方法 const downloadFile = function (dest ...
- CPU性能测试——CoreMark篇
本文将介绍使用CoreMark测试程序对我们小组自研芯片进行性能的测试,记录了CoreMarK工具的使用以及对其测试结果进行分析 测试环境: PC OS: Ubuntu20.04 LTS CPU: 自 ...
- JAVA编程环境与基本数据类型
<JAVA编程环境与基本数据类型> 随笔目录 # <JAVA编程环境与基本数据类型> 随笔目录 - Java小实例 java的编程环境 java数据类型 Java小实例 jav ...
- swoole中websoket创建在线聊天室(php)
swoole中websoket创建在线聊天室(php) swoole现仅支持Linix,macos 创建websocket服务器 首先现在服务器创建一个websocket服务器 <?php // ...
- COW技术重置虚拟机
最近使用COW技术做虚拟机重置,结果成功了,特地来给大家分享一下这次的成果! 文章目录 一.COW技术是什么? 二.重置虚拟机步骤 总结 往期杂文 一.COW技术是什么? Copy On Write, ...