oracle进阶(多表操作).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文档。上传文档
查看更多
oracle进阶(多表操作)

oracle进阶(多表操作) /* 以下代码是对emp表/dept表/salgrade表进行显示宽度设置 */ col empno for 9999; col ename for a10; col job for a10; col mgr for 9999; col hiredate for a12; col sal for 9999; col comm for 9999; col deptno for 99; col dname for a14; col loc for a14; col grade for 9999; set pagesize 20; select * from emp; select * from dept; select * from salgrade; // 员工表和部门表的笛卡尔集(笛卡尔集表=列数之和,行数之积) select * from dept,salgrade; 最终产生的表,列是各子表列之和,行是各子表行之积 笛卡尔集的结果无任何实际意思,我们得从笛卡尔集的结果中抽选中有意思的数据 如果通过表名.列名来取得某个表中的字段 等值连接,显示员工的编号,姓名,部门 select emp.empno,emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; 使用表别名,等值连接,显示员工的编号,姓名,部门 select e.empno,e.ename,d.dname from emp e,dept d where e.deptno=d.deptno; oracle表名不能出现as关健字,字段可以 不等值连接,显示员工的编号,姓名,月薪,级别,只要不是使用=号即就 select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal; 【左外连接】,按部门,统计员工人数,显示部门号,部门名,人数 select d.deptno 部门号,d.dname 部门名,count(e.deptno) 人数 from dept d,emp e where d.deptno=e.deptno(+) group by d.deptno,d.dname; (+)号一定是出现在where子句中, 依据(+)出现在=号二个的位置不同,叫法不相: (+)出现在=号左边,叫右[外]连接 (+)出现在=号右边,叫左[外]连接 依据=号二边,看哪一边少了值,就将(+)号加上少值的那边 右外连接,按部门,统计员工人数,显示部门号,部门名,人数 select d.deptno 部门号,d.dname 部门名,count(e.deptno) 人数 from dept d,emp e where d.deptno(+)=e.deptno group by d.deptno,d.dname; 自连接,显示SMITH的老板是FORD这种格式 select e.ename || 的老板是 || b.ename from emp e,emp b where e.mgr = b.empno; 原则:将一个表,看作二张不同的表 // 查询工资比SCOTT高的员工信息 子查询主要解决:条件是未知的查询,而且需要经过多个步骤才能完成。 1)SCOTT的工资? select * from emp where ename=SCOTT; 2) 比3000高的员工信息? select * from emp where sal3000; 3)将1)和2)二步合二为一,形成主子查询 select * from emp where sal( select sal from emp where ename=SCOTT ); 查询部门名为ACCOUNTING的员工信息(方式一:子查询) 1)查询部门名为ACCOUNTING的部门号 select deptno from dept where dname=ACCOUNTING; 2)根据10号查询对应的员工信息 select * from emp where deptno=10; 3)将1)和2)二步合二为一,形成主子查询 select * from emp where deptno=( select deptno from dept where dname=ACCOUNTING

文档评论(0)

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

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

1亿VIP精品文档

相关文档