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