【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 ...
随机推荐
- Stata极简生存分析
1. 导入数据 webuse drugtr,clear *webuse -- Use dataset from Stata website stset,clear *上一行命令导入进来的数据是&quo ...
- java线程调度
JAVA线程调度分抢占式和协调式 协调式的线程切换由线程本身自己控制,好处是实现简单,当前线程只有当事情做完才会通知系统进行切换并没有同步开销,坏处是容易引发事故,假如阻塞的线程由于代码BUG没有通知 ...
- 第八章节 BJROBOT hector 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】
1.把小车平放在地板上,用资料里的虚拟机,打开一个终端 ssh 过去主控端启动roslaunch znjrobot bringup.launch. 2.在虚拟机端打开一个终端,ssh 过去主控端启动r ...
- SonarQube学习(四)- 使用Jenkins集成JaCoCo和SonarQube检查代码测试覆盖率
一.前言 我始终觉得学习这件事是自己的事,自己会了就是会了,无关于他人,但有点小伤感的是现在的阅读量开始走低. 二.准备 安装Jenkins,请移步<Docker学习(二)- Docker 安装 ...
- redis数据类型:String
redis数据类型:String 花开堪折直需折,莫待无花空折枝 实际应用中有多种多样的场景,比如: 秒杀 新闻热点 在线人数 session.token管理 各个场景需要的数据类型各不相同:常见的数 ...
- SpringBoot入门及深入
一:SpringBoot简介 当前互联网后端开发中,JavaEE占据了主导地位.对JavaEE开发,首选框架是Spring框架.在传统的Spring开发中,需要使用大量的与业务无关的XML配置才能使S ...
- 【老孟Flutter】2021 年 Flutter 官方路线图
老孟导读:这是官方公布的2021年路线图,向我们展示了2021年 Flutter 的主要工作及计划. 原文地址:https://github.com/flutter/flutter/wiki/Road ...
- 搭建docker环境,安装常用应用(单机)
## 安装docker ```bash1.卸载系统之前dockersudo yum remove docker \ docker-client \ docker-client-latest \ doc ...
- HAProxy + keepalived 高可用集群代理
HAProxy + keepalived # 1 安装keepalived: yum install keepalived -y # 2 修改KEEPalived配置文件: vim /etc/keep ...
- 【Linux】CentOS7中yumbackend.py进程的结束方法
环境: CentOS Linux release 7.3.1611 (Core) 今天启动这个不怎么用的机器,才启动,就发现后台的yum无法进行安装,持续报这个错误 Loaded plugins: f ...