表的高级查询.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
表的高级查询

子查询 通过把一个查询的结果作为另一个查询的一部分。 具体是第一个查询可以作为第二个查询的一部分出现在第二个查询的条件中,这就是子查询。 第一个查询是子查询,第二个查询是主查询。 在select 语句中嵌套了另一个select语句 where 子句中嵌套子查询 用子查询的结果 作为字段来出现 子查询出现在from子句中 --1) where子句中嵌套子查询,执行顺序是: 先执行子查询 再执行主查询 例1:找出工资高于公司平均工资的所有员工? select * from emp where sal+nvl(comm,0)(select avg(sal+nvl(comm,0)) from emp); 例2:高于部门30中员工最高工资的其他员工? select * from emp where sal+nvl(comm,0) all(select sal+nvl(comm,0) from emp where deptno=30); 例3:列出受雇日期早于其直接上司的所有员工。 select * from emp e where hiredate(select hiredate from emp where empno=e.mgr); 例4:列出薪金高于部门30中员工的薪金的所有员工的姓名和薪金。 select ename,sal from emp where salall(select sal from emp where deptno=30); 例5:查询薪水比’MANAGER’的还高的员工信息。 select * from emp where salany(select sal from emp where job=’MANAGER’); --2)用子查询的结果 作为字段来实现 先执行主查询 再执行子查询 例1:找员工姓名和直接上级的名字 select ename as 员工姓名,(select ename from emp where empno=a.mgr) as 经理名字 from emp a; 例2:显示部门名称和人数 select dname,(select count(*) from emp where deptno=a.deptno)as 人数 from dept a; 例3:列出所有部门的详细信息和部门人数。 select a.*,(select count(*) from emp where deptno=a.deptno) as 人数 from dept a; 3)from 中加子查询 通常的查询中,FROM子句后面都是具体的表名。然而,我们也可以在FROM后面跟上一个子查询作为中间数据结果集 1】 显示雇员的名称和所在的部门的编号和名称。 执行以下查询: SELECT e.ename,e.deptno,d.dname FROM emp e,dept d WHERE e.deptno=d.deptno; 说明:在where条件中要指明进行相等连接的列. 为表起别名 不在两个表中同时出现的列,前面的表明前缀(或别名)可以省略。 简化后: SELECT ename,d.deptno,dname FROM emp e,dept d WHERE e.deptno=d.deptno; 【训练2】 显示工资大于3000的雇员的名称、工资和所在的部门名称。 SELECT ename,sal,dname FROM emp e,dept d WHERE e.deptno=d.deptno AND sal3000; 不等连接:两个表中的相关的两列进行不等连接,比较符号一般为: ,,=,=,between…and… 显示雇员名称,工资和所属工资等级。 select ename,sal,grade from emp e,salgrade s where e.sal between s.losal and s.hisal; 显示雇员的编号,姓名,工资,工资级别,所在部门的名称 Select empno,ename,sal,grade,dname from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between losal and hisal; 外连接: 相等连接有一个问题:如果某个雇员的部门还没有填写, 即保留为空,那么该雇员在查询中就不会出现; 或者某个部门还没有雇员,该部门也不会出现。 为了解决这个问题可以用外连,即除了满足相等条件的记录外

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档