数据库的多表查询(详细案例分析)

作者:Vashon

时间:20150414

所用数据库:Oracle11g



多表查询 (如果理解以下查询,相信你可以举一反三)


##查询一个表中有多少条记录:select count(*) from 表名称; //特别是数据量太大是先用这条语句;


*范例:查询出每一位雇员的编号,姓名,职位,部门名称,位置;

select e.empno,e.ename,e.job,d.deptno,d.loc from emp e,dept d where e.deptno=d.deptno; //确定表的关联字段:emp.deptno=dept.deptno;


*范例:要求查询出每一个雇员的姓名,职位,领导的姓名:select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno; //第一个emp表(雇员):取得雇员姓名,职位,领导编号; 第二个emp表(领导):取得雇员的姓名(领导的姓名);


*范例:查询出每个雇员的编号,姓名,基本工资,职位,领导的姓名,部门名称及位置.
*确定所需要的数据表:emp表:每个雇员的编号,姓名,基本工资,职位;
emp表(领导):领导的姓名;
dept表:部门的名称及位置.
*确定已知的关联字段:雇员和部门:emp.deptno=dept.deptno;
雇员和领导:emp.mgr=emp.empno;

select e.empno,e.ename,e.sal,e.job,m.ename,d.dname,d.loc from emp e,emp m,dept d where e.mgr=m.empno and e.deptno=d.deptno;


*范例:要求查询出每个雇员的编号,姓名,工资,部门名称,工资所在公司的工资等级.
*确定所需要的数据表:emp表:雇员的编号,姓名,工资;
dept表:部门等级;
salgrade表:工资等级;
*确定已知的关联字段:雇员和部门:emp deptno=dept.deptno;
雇员和工资等级:emp sal between salgrade losal and salgrade hisal;
select e.empno,e.ename,e.sal,d.dname,decode(s.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资') gradeinfo from emp e,dept d,salgrade s
where e.deptno=d.deptno and e.sal between s.losal and s.hisal;

*范例:查询出公司各个工资等级雇员的数量、平均工资
select s.grade, count(e.empno), avg(e.sal)
from salgrade s,emp e where e.sal BETWEEN s.losal and s.hisal
group by s.grade;


*连接方式的改变:1.左(外)连接:left outer join...on;
2.右(外)连接:right outer join...on;

3.全(外)连接:full outer join...on; //把两张表中没有的数据都显示;





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值