- 浏览: 93508 次
- 性别:
- 来自: 广西
文章分类
最新评论
-
李涤尘:
很好,很清晰的记录
Oracle 多表查询 -
yanxiaojia521:
项目部署成功后,使用localhost可以访问,在局域网内容访 ...
Linux系统下的项目部署 -
txlong_onz:
学好正则这些都不用记了。有的时候要灵活的。
文本框的输入限制
Oracle 多表查询 1. SQL语句的执行顺序 SELECT DNAME, MAX(SAL) -- 5 对列筛选(分组字段或聚集函数) FROM EMP LEFT OUTER JOIN DEPT -- 1 确定表 USING (DEPTNO) WHERE DEPTNO > 0 -- 2 确定行(记录) GROUP BY DNAME -- 3 将行分组 HAVING MAX(COMM) IS NULL OR MAX(COMM) > 0 -- 4 对组筛选 ORDER BY DNAME -- 6 对结果集排序 2. 等值查询: 在存在主外键关系的表中,使用等号建立表之间的连接 SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO; SQL99新标准:内连接(inner join) SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A INNER JOIN DEPT B -- inner可省略 ON A.DEPTNO = B.DEPTNO; 3. 非等值查询: 使用非等号关系运算符进行多表的连接 SELECT A.ENAME, A.SAL, B.GRADE FROM EMP A, SALGRADE B WHERE A.SAL BETWEEN B.LOSAL AND B.HISAL; 4. 外连接(outer join): 类似等值查询,使用特定的符号(+) (+)符号如果出现在where子句等号的左边,叫左外连接,左外连接会显示右表的全部数据; (+)符号如果出现在where子句等号的右边,叫右外连接,右外连接会显示左表的全部数据; SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO(+) = B.DEPTNO; SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO(+); SQL99新标准: 左外连接: SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A LEFT OUTER JOIN DEPT B -- outer可省略 ON A.DEPTNO = B.DEPTNO; 右外连接: SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A RIGHT OUTER JOIN DEPT B -- outer可省略 ON A.DEPTNO = B.DEPTNO; 全外连接:外连接是在等值(内)连接的基础上将左表和右表的未匹配数据都加上 SELECT A.EMPNO, A.ENAME, B.DEPTNO, B.DNAME FROM EMP A FULL OUTER JOIN DEPT B -- outer可省略 ON A.DEPTNO = B.DEPTNO; 5. 自连接: 特殊的多表连接,连接的多个表来自于同一个表 SELECT A.EMPNO, A.ENAME, B.ENAME MANAGER FROM EMP A, EMP B WHERE A.MGR = B.EMPNO; 6. 自然连接(natural join): 基于多个表有一个或多个相同字段名,且这些字段的类型相同 由oracle自行决定哪些列作为连接的条件:将不同表中的那些具有相同名称和数据类型的字段用等值连接起来。 SELECT A.ENAME, B.DNAME FROM EMP A NATURAL JOIN DEPT B; 7. 交叉查询(cross join): 笛卡尔集 SELECT A.ENAME, A.SAL, B.GRADE FROM EMP A, SALGRADE B; 8. join...using: 使用 USING 可以在natural join时有多个列满足条件,指定具体的字段做等值连接 如果列名相同但是数据类型不同,这时不能使用natural join 可以使用 using来连接。 当多列匹配时,using只能匹配一列。 在引用的列前面不能有表名或者表别名。 natural join和using 是相互排斥的 SELECT A.ENAME, B.DNAME FROM MYEMP A JOIN DEPT B USING (DEPTNO); 9. union[all]: 取多个查询结果的并集,不要all表示重复的记录只保留一条 注意:union、minus、intersect做连接查询时,多个查询结果的字段和类型要一致 SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE JOB = 'CLERK' UNION ALL -- ALL可以省略 SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20 ORDER BY ENAME; 10. minus: 取多个查询结果的差集 注意:union、minus、intersect做连接查询时,多个查询结果的字段和类型要一致 SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE JOB = 'CLERK' MINUS SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20 ORDER BY EMPNO; SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20 MINUS SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE JOB = 'CLERK' ORDER BY EMPNO; 11. intersect: 取多个查询结果的交集 注意:union、minus、intersect做连接查询时,多个查询结果的字段和类型要一致 SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE JOB = 'CLERK' INTERSECT SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20 ORDER BY EMPNO;
发表评论
-
ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句(四)
2014-01-12 19:48 0ORACLE学习笔记系列(15)使用扩展的 GROUP BY ... -
ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句(三)
2014-01-12 19:46 0ORACLE学习笔记系列(15)使用扩展的 GROUP BY ... -
ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句(二)
2014-01-12 19:45 0ORACLE学习笔记系列(15)使用扩展的 GROUP BY ... -
ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句
2014-01-12 19:54 1272ORACLE学习笔记系列(15)使用扩展的 GROU ... -
ORACLE学习笔记系列(14)聚合函数
2014-01-12 19:30 1286ORACLE学习笔记系列(14)聚合函数 常用的聚合 ... -
ORACLE学习笔记系列(13)转换函数
2014-01-12 19:28 510ORACLE学习笔记系列(13)转换函数 转换函数 ... -
ORACLE学习笔记系列(12)数字函数
2014-01-12 19:26 423ORACLE学习笔记系列(12)数字函数 数字函数 ... -
ORACLE学习笔记系列(11)字符函数
2014-01-12 19:25 557ORACLE学习笔记系列(11)字符函数 字符函数 ... -
ORACLE学习笔记系列(10)正则表达式
2014-01-11 12:41 2198ORACLE学习笔记系列(10 ... -
ORACLE学习笔记系列(9)通配符和特殊字符
2014-01-05 22:28 2378ORACLE学习笔记系列(9 ... -
ORACLE学习笔记系列(8)ORACLE中的空值(NULL)和与空值(NULL)有关的函数
2014-01-05 15:02 1394ORACLE学习笔记系列(8)ORACLE中的空值(NU ... -
ORACLE学习笔记系列(7)SQL语言分类
2013-12-29 19:57 917SQL语言的五大组成部分DQL DML DDL DCL ... -
ORACLE学习笔记系列--目录
2013-12-29 19:14 637ORACLE学习笔记系列--目录 ORACL ... -
ORACLE学习笔记系列(6)Outer Join新旧语法对比分析
2013-12-18 21:55 1390从Oracle9i开始,支持ANSI/ISO ... -
ORACLE学习笔记系列(5)连接查询和联合查询
2013-12-15 16:54 1096连接查询和联合查询 一、连接查询 通过连接运 ... -
ORACLE学习笔记系列(4)ORACLE优化器
2013-12-15 15:19 823Oracle优化器介绍 1 ... -
ORACLE学习笔记系列(3)SQLPLUS里的清屏命令
2013-12-15 15:05 686SQLPLUS里的清屏命令 方法一:同时按S ... -
ORACLE学习笔记系列(2)解决 SQLPLUS分析SQL语句出现 'PLAN_TABLE' is old version
2013-12-15 14:59 1063解决 SQLPLUS分析SQL语句出现 'PLAN_TAB ... -
ORACLE学习笔记系列(1)如何使用SQLPLUS分析SQL语句
2013-12-15 14:49 1114如何使用SQLPLUS分析SQL语句 ... -
Oracle 日期时间运算
2012-05-16 15:08 1334---------------------oracle 时间运 ...
相关推荐
Oracle 多表查询优化
oracle 多表查询
oracle多表查询PPT课件.pptx
oracle 多表查询与数据修改学习笔记,主要是让大家熟悉三个或四个表的连接查询,熟练掌握delete、update与insert的语法。
不错,收集在一块方便查看 这里提供的是执行性能的优化,而不是后台数据库优化器资料: 参考数据库开发性能方面的各种问题,收集了一些优化方案统计如下
oracle多表查询的基本概念,例子是oracle默认的表
oracle多表查询oracle多表查询oracle多表查询oracle多表查询oracle多表查询
oracle多表查询优化
oracle多表查询PPT学习教案.pptx
oracle锁表查询oracle锁表查询oracle锁表查询oracle锁表查询
Oracle系统表查询Oracle系统表查询
oracle系统表查询,详细讲解各个系统表的使用
Oracle基础练习题及答案(多表查询1)Oracle基础练习题及答案(多表查询1).
oracle查询表碎片语句
oracle经典sql语句查询,近百中查询练习,个个经典! 适合学习!
oracle 多表联接查询,注意是联接查询,获取多个表中的部分数据,
ORACLE经典语句汇总 -- 字符串左填充和右填充,默认填充空格 -- 产生1~99行数据,少于一位则补0 -- 刪除相同行 ...-- 查询那些用户,操纵了那些表造成了锁机 --看锁阻塞的方法 --ORACLE获得系统信息
OracleOracle查询死锁表OracleOracle查询死锁表OracleOracle查询死锁表
一些ORACLE的表链接查询。求最高,最低,排序