分享更有价值
被信任是一种快乐

怎么理解Oracle数据库中的多表查询,分组查询,子查询

文章页正文上

本篇内容介绍了“怎么理解Oracle数据库中的多表查询,分组查询,子查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  多表查询  FROM  性能不好,海量的大数据不建议使用  多表查询:在FROM子句后面设置多张数据表  笛卡尔积:会将两张表相乘  使用别名,若表名很长  表的连接  SELECT *  FROM emp e,dept d  WHERE e.des=d.des;  表连接的的两种形式:  内连接(等值连接):所有满足条件的数据都会被显示出来;  外连接(左连接,右连接,全外连接)控制左表与右表的数据是否全部显示。(+)标记仅Oracle才有  SELECT *  FROM emp e,dept d  WHERE e.des=d.des(+);  //左外连接,显示所有emp表的内容  1999语法  左外连接  SELECT * FROM emp LEFT OUTER JOIN dept USING(deptno);  全外连接  SELECT * FROM emp FULL OUTER JOIN 免费主机域名dept USING(deptno);  分组查询  GROUB BY  select
d.deptno,d.dname,d.loc,trunc(avg(months_between(sysdate,e.hiredate)/12))
years  from dept d,emp e  group by d.deptno,d.dname,d.loc;  Oracle执行语句及顺序  5确定要使用的数据:SELECT  1确定要查找的数据源:FROM  2.针对于数据行的筛选:WHERE  3针对于数据实现分组:GROUP BY  4针对于分组后的数据进行筛选:HAVING  6针对于返回数据进行排序:ORDER BY  WHERE和HAVING的区别:  WHERE出现在GROUP BY 操作之前,即分组前的数据筛选,不允许使用统计函数  HAVING出现在GROUP BY 之后,针对分组后的数据进行筛选,可以使用统计函数  UNION和UNION ALL的区别:  union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序;  union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;  子查询  可同时嵌套多个子查询  未选定行可能是子查询返回为空  作用:解决多表查询带来的笛卡尔积影响的性能问题。  SELECT子句  返回单行单列,使用较少  FROM子句  返回多行多列(表结构)  SELECT d.dname,d.loc,count  FROM dept d,(SELECT deptno,COUNT(empno) count from emp GROUP BY deptno)
temp  WHERE d.deptno=temp.deptno(+);  WHERE子句(用到最多)  返回单行单列,单行多列,多行单列  作用:数据行的筛选,过滤条件使用  单行单列:  SELECT *  FROM emp  WHERE sal>(SELECT AVG(sal) FROM emp);  单行多列:  SELECT *无锡妇科费用 http://www.wxbhnkyy39.com/  FROM emp  WHERE (sal,job)=(SELECT sal,job FROM emp WHERE ename=’SCOTT’);  多行单列:  三种操作符IN,ANY,ALL  免费主机域名IN 操作  与子查询中的sal相同均满足此条件  SELECT *  FROM emp  WHERE sal IN (SELECT sal FROM emp WHERE ename=’SCOTT’);  ANY  >ANY ()—大于其中最小数值就满足  =ANY ()—等于其中一个数值就满足  SELECT *  FROM emp  WHERE sal=ANY (SELECT sal FROM emp WHERE job=’CLERK’);  ALL  >ALL ()—比查询得到的最大值要大  SELECT *  FROM emp  WHERE sal>ALL (SELECT sal FROM emp WHERE job=’CLERK’);  HAVING子句  返回单行单列,同时表示要使用统计函数  SELECT job,COUNT(ename),AVG(SAL)  FROM emp  GROUP BY job  HAVING AVG(sal)>(SELECT AVG(sal) FROM emp);“怎么理解Oracle数据库中的多表查询,分组查询,子查询”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云技术网站,小编将为大家输出更多高质量的实用文章!

相关推荐: MySQL性能参数的示例分析

这篇文章主要介绍MySQL性能参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_co…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册