Oracles数据库学习笔记(三)多表查询

多表查询

一、为什么使用多表连接

因为在实际系统中,一张表无法涵盖业务的所有信息,即使能,使用一张表来存储所有业务数据也会使数据变得难以维护,提高耦合性,失去可维护性。比如一个超市系统将会员表,库存表,进货表,售价表糅合成一张表,相信没有任何管理员愿意去使用这种表。

二、笛卡尔积

1.笛卡尔积是:
第一个表中的所有行和第二个表中的所有行都发生连接。
2.笛卡尔积在下列情况产生:
 (1)连接条件被省略;
 (2)连接条件是无效的;
3.为了避免笛卡尔积的产生,通常需要在WHERE子句中包含一个有效的连接条件。
4.笛卡尔积的写法:

SELECT EMP.EMPNO, EMP.ENAME, EMP.DEPTNO, DEPT.DEPTNO, DEPT.LOC
FROM EMP, DEPT;

三、连接查询

多表连接的写法

  1.分析要查询的列都来自于哪些表,构成FROM子句;
  2.分析这些表之间的关联关系,如果表之间没有直接关联关系,而是通过另一个中间表关联,则也要在FROM子句中补充中间关联表;
  3.接下来在WHERE子句中补充表之间的关联关系,通常N个表,至少要有N-1个关联关系;
  4.分析是否还有其它限制条件,补充到WHERE子句的表关联关系之后,作为限制条件;
  5.根据用户想要显示的信息,补充SELECT子句。
  6.分析是否有排序要求,如果排序要求中还涉及到其它表,则也要进行第2步补充排序字段所在的表,并且添加表之间的关联关系;

1.等值连接。两个表中的相同字段可以使用“=”进行连接,作为限制条件,不过要使用表名作为前缀

练习1
1-1写一个查询,显示所有员工姓名,部门编号,部门名称

SELECT ENAME,EMP.DEPTNO,DNAME
FROM EMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值