网站大量收购独家精品文档,联系QQ:2885784924

ORACLE笔记03(++).doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE笔记03()

表的复杂查询: 数据分组:---max,min,avg,sum,count ?计算共有多少员工: select count(*) from emp; 细节:count(*)也可以对一个字段进行统计 ,比如:count(comm); 扩展要求: ?请显示工资最高的员工的名字,工作岗位? 思路:我们可以使用子查询来完成: 可以先查询出最大工资是多少:select max(sal) from emp; 然后看谁的工资这么多:select ename,job from emp where sal= (select max(sal) from emp); ?请显示工资高于平均工资的员工信息: select * from emp where sal(select avg(sal) from emp); group by 、having ?如何显示每个部门的平均工资和最高工资 select avg(sal) 工资,max(sal) ,deptno from emp group by deptno; ?显示每个部门的每种岗位的平均工资和最低工资 select avg(sal) 平均工资,(sal) 最低工资, job from emp group by job; ?显示部门平均工资低于2000的部门号和它的平均工资 思路:(1)、查询出各个部门的平均工资 select avg(sal),deptno from emp group by deptno; (2)、挑选出低于2000的 select avg(sal),deptno from emp group by deptno having avg(sal)2000; 多表查询 需求:因为在实际开发中,我们不可避免的用到两张表或者以上的表进行联合查询,比如: ?显示雇员名,雇员工资以及所在部门名字: select ename,sal,dname from emp,dept where emp.deptno=dept.deptno; (1)、我们先看看对表查询的原理:请看图解: 特别说明: 笛卡尔积:在多表查询的时候,如果不带任何条件,则会出现笛卡尔积。 怎么样避免笛卡尔积:多表查询的条件至少不能少于表的个数减1。 (2)、显示雇员名,雇员工资以及所在部门名字: select ename,sal,dname from emp,dept where emp.deptno=dept.deptno; ?如何显示部门号为10的部门名、员工名、工资 select dname,ename,sal from emp,dept where (emp.deptno=dept.deptno and emp.deptno=10); 或者: select dname,ename,sal from emp,dept where (emp.deptno=dept.deptno and dept.deptno=10); ?显示各个员工的姓名,工资,以及工资的级别 select emp.ename,emp.sal,salgrade.grade from emp,salgrade where emp.sal between salgrade.losal and salgrade.hisal; 在多表查询过程中,要不要加表名,如果两个表的列同名,则需要加表名区分,否则就可以不加表名。虽然可以不加,但是建议大家都加上表名,以增加可读性。 注意:我们建议大家在进行多表查询时,使用别名,这样方便。 举例: select e.ename, e.sal, s.grade from emp e ,salgrade s where e.sal between s.losal and s.hisal; 扩展要求: ?显示雇员名,雇员工资以及所在部门的名字,并按部门排序 select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno order by dname; 自连接: 比如显示‘ford’的上级: (1)、查询出他的上级的编号 select mgr from emp where ename=’ford’; (2)、显示上级的信息: select * from emp where empno=( select mgr from emp where ename=’ford’); ?显示各个员工的姓名和他的上级领导的姓名 (1)、把emp 表看成是两张表(worker,boss), select worker.ename,boss.ename from

文档评论(0)

exianwhan + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档