oracle 数据库3——关联查询
来源:互联网 发布:mac系统编辑文档的软件 编辑:程序博客网 时间:2024/05/22 12:30
1. 关联查询概述
- 关联查询就是从多张表中关联查询数据,重点是多张表之间的连接条件,根据该条件数据库才知道这些表之间数据的对应关系,从而分别获取这些对应的记录中查询的字段并构成结果集。
- 关联查询要有连接条件,不添加连接条件会产生笛卡尔积,这通常是一个无意义的结果集。
- 原则上 N 张表关联至少需要有 N-1 个连接条件。
2. 关联查询的分类:
- 关联查询有内连接、外连接、自连接三种情况。
3. 等值连接
- 是连接查询中最常见的一种,通常是在有主外键关联关系的表间建立,并将关联条件设定为有关系的列,使用“=”连接有关系的表。等值连接是关联查询的基础。
--没有关联条件会出现笛卡尔积select ename,dname from emp,dept; --不会出现笛卡尔积select emp.ename,dept.dname from emp,dept where emp.deptno = dept.deptno;--表也可以使用别名,方便操作select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;--where 中关联条件和过滤条件必须同时成立,否则出现笛卡尔积select e.name,e.job,d.loc from emp e,dept d where e.deptno = d.deptno AND e.job='SALESMAN';--查看每个地区的平均工资select d.loc,AVG(e.salary) from emp e,dept d where e.deptno = d.deptno group by d.loc;
4. 关联查询分类
内连接
只显示满足连接条件的记录
--查看每个员工以及所在部门名select e.ename,d.dname from emp e JOIN dept d ON e.deptno = d.deptno;--也可以用等值连接来表示:select e.ename,d.dnamefrom emp e,dept dwhere e.deptno = d.deptno;
外连接
不仅将满足连接条件的记录查询出来,还将驱动表中的记录都显示出来,不满足条件的字段为 NULL
--左外连接(JOIN 左边为驱动表)--列出所有员工及其所在部门名(所有员工为驱动表)select e.ename,d.dnamefrom emp e LEFT OUTER JOIN dept d ON e.deptno = d.deptno;
等值连接(普通连接)也可以作外连接操作,但是不可以作全外连接操作。
+ 在连接条件的左边,左边为 NULL ,是右外连接;
+ 在连接条件的右边,右边为 NULL,是左外连接;
+ 不能连接条件两边都写,所以等值连接不可以作全外连接;
--左外连接select e.ename,d.dnamefrom emp e,dept dwhere e.deptno = d.deptno(+);
自连接
自连接是一种特殊的连接查询,数据来源是一个表,即关联关系来自于单表中的多个列;
表中的列参照同一个表中的其他列的情况,称作自参照表;
自连接是当前表的一条数据对应当前表的多条数据;
自连接用于解决相同属性的一组数据,但是又存在上下级关系的树状结构组织时使用;
--查看每个员工及其上司的名字select e.enmae,m.enamefrom emp e JOIN emp m ON e.mgr = m.mepno;
0 0
- oracle 数据库3——关联查询
- oracle 关联查询两个数据库
- oracle 数据库查询关联运算
- 51.Oracle数据库SQL开发之 子查询——编写关联子查询
- oracle 数据库查询-关联查询-2
- Oracle数据库学习(三)--基础查询及关联查询
- Oracle数据库学习--基础查询及关联查询
- Oracle数据库的关联父键和子键查询
- Oracle数据关联查询
- oracle角色关联查询
- oracle关联查询
- Oracle数据关联查询
- Oracle数据关联查询
- Oracle数据关联查询
- 数据库关联查询说明
- 数据库关联查询
- 关联表查询数据库
- MYSQL数据库关联查询
- android 基于GPS或网络定位学习(LocationManager)
- android PendingIntent学习
- JAVA多线程
- BZOJ 2654: tree
- android Notification通知消息学习(NotificationManager)
- oracle 数据库3——关联查询
- android APK签名学习
- 安卓V7后自定义Toolbar、ActionBar左侧有空白问题解决
- android zipalign对齐优化学习
- 漫画怎么画?用什么数位板好?
- iBET Birthday Bonus RM 38, RM 88 & RM 128 by SCR888
- android Context上下文详细了解以及使用
- 前端面试题
- 【寒江雪】软件测试方法