Oracle基础知识5 : 多表查询1

–关系型数据库 : 表与表之间是有关联的
–非关系型数据库 : 底层就是一张表 , 与其他表没有关系

–关联查询的结果集中的字段来自多张表,
–需要在查询的时候联合多张表进行查询,
–根据给定的连接条件将表与表的数据建立对应关系,
–再分别从这些记录中提取要查询的字段来形成结果集中的每条记录

SELECT * 
FROM emp,dept;

–这个叫笛卡尔积~~
–查询中不指定连接条件或连接条件无意义时,会产生笛卡尔积。这通常是无意义的

SELECT ename,emp.deptno,dname
FROM emp,dept
WHERE emp.deptno = dept.deptno;

–查询每个员工的名字和他所在的部门名称

SELECT ename,loc
FROM emp,dept
WHERE emp.deptno = dept.deptno AND dept.loc = 'NEW YORK';

–查看在NEW YORK工作的都有谁
–内连接 :

SELECT ename,emp.deptno,dname,loc
FROM emp JOIN dept
ON emp.deptno = dept.deptno
WHERE loc = 'NEW YORK';

–JOIN连接两个表 , ON 后面是关联条件

–左内连接时,以左边表为主 (主表内容必须显示)

SELECT ename,dname
FROM emp LEFT JOIN dept
ON emp.deptno = dept.deptno;

–左连接(左表的数据都有)

SELECT ename,dname
FROM emp RIGHT JOIN dept
ON emp.deptno = dept.deptno;

–右连接(右表的数据都有)

SELECT ename,emp.deptno,dname
FROM emp,dept
WHERE emp.deptno(+) = dept.deptno;

–这也是右连接的一种查询方式
–(+)在哪边,哪边的表就无效(也就是以另一个表为主表)

–全连接 :左表右表都作为主表查询一下

SELECT ename,dname
FROM emp FULL JOIN dept
ON emp.deptno = dept.deptno;

–全连接(左表右表的数据都显示出来)

–自连接 :(自连接的时候一定要取别名)

SELECT e.empno,e.ename,e.mgr,m.ename
FROM emp e,emp m
WHERE e.mgr = m.empno(+);

–查看每个员工的上司
–这个时候如果用内连接的话 , 会漏数据(没有领导的员工就被漏掉了)

这里写图片描述
emp表↑
这里写图片描述
dept表↑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值