Oracle数据库--------------------------多表查询

本文介绍了Oracle数据库中多表查询的基础知识与实践案例,包括如何通过JOIN操作优化查询效率,以及如何利用表别名简化查询语句。文章还探讨了在进行多表查询时需要注意的性能问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Oracle数据库的学习记录:

十四、多表查询
1.从多张数据表里取出数据
范例:统计emp表中的数据量
SELECT COUNT(*) FROM emp;  ----14行记录
范例:统计dept表中的数据量
SELECT COUNT(*) FROM dept;  ----4行记录
范例:实现多表查询
SELECT * FROM emp,dept;
实现了多表查询,但是查询的结果发现有了惊喜,一共产生了56行的记录
SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno;

CONN sh/sh;
SELECT COUNT(*) FROM costs;
SELECT COUNT(*) FROM sales;
SELECT COUNT(*) FROM costs,sales WHERE sales.prod_id=cost.prod_id;
以上的代码已经提供了消除积的条件,但是,执行速度依然很慢,因为总的数据量很大;一定要记住一个原则:多表查询性能一定是很差的,在开发之中应该尽可能回避。但是,在进行列访问的时候发现都使用了表名称,严格来讲,这样也不好,万一表名称很长?
所以在进行多表查询的时候建议使用别名
范例:使用别名
SELECT * FROM emp e,dept d WHERE e.deptno=d.deptno;
任何情况下,如果要实现多表查询操作,永远都有一个前提:要关联的数据表一定要有关联字段条件,不存在这些要求,一定不能够使用多表查询
范例:要求显示每个雇员的编号、姓名、职位、工资、部门名称、部门位置
SELECT e.empno,e.ename,e.job,e.sal,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno;
范例:要求显示每个雇员的编号、姓名、职位、工资、工资等级
**确定要使用的数据表
  |-emp表:雇员的编号、姓名、职位、工资
  |-salgrade表:工资等级
**确定已知的关联字段
  |-雇员与工资等级:
SELECT e.empno,e.ename,e.job,e.sal,s.grade FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;
范例:查询每个雇员的编号、姓名、职位、工资、工资等级、部门名称
**确定要使用的数据表
  |-emp表:雇员的编号、姓名、职位、工资
  |-salgrade表:工资等级
  |-dept表:部门名称
**确定已知的关联字段
  |-雇员与工资等级:emp.sal BETWEEN salgrade.losal AND salgrade.hisal;
  |-雇员与部门:emp.deptno=dept.deptno;
一般情况下如果是多个消除笛卡尔积的条件都会使用AND进行连接
SELECT e.empno,e.ename,e.job,e.sal,s.grade,d.dname FROM emp e,salgrade s,dept d WHERE e.sal BETWEEN s.losal AND s.hisal AND e.deptno=d.deptno;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值