多表查询
来源:互联网 发布:qq飞车暗夜王爵数据 编辑:程序博客网 时间:2024/05/29 16:04
笛卡尔集:笛卡尔集是多表查询的理论基础。笛卡尔集的行数是两个表行数的乘机,列数等于两个表相加。在多表查询的时候尽量少使用笛卡尔全集。
笛卡尔集会在下面条件下产生:
1、省略连接条件
2、连接条件无效
3、 所有表中的所有行互相连接
注:在实际运行环境下,应避免使用全笛卡尔集,为了避免笛卡尔集,可以在 WHERE加入有效的连接条件。
连接的类型
等值连接(Equijoin):where后的条件是相等关系,如果表有N个,那个条件至少有N-1个。
例:查询员工信息; 员工号 姓名 月薪和部门名称
select e.empno,e.ename,e.sal,d.dname from empe,dept d where e.deptno=d.deptno;
不等值查询(Non-equijoin):where后的条件是不相等关系
例:查询员工信息; 员工号 姓名 月薪并且薪水在最高与最低级别之间。
select e.empno,e.ename,e.sal,s.grade from empe,salgrade s where e.sal between s.losal and s.hisal;
外连接(Outer join)
左外连接:where e.deptno=d.deptno 不成立,等号左边所代表的表信息仍然被包含
写法:where e.deptno=d.deptno(+)
右外连接: where e.deptno=d.deptno 不成立,等号右边所代表的表信息仍然被包含
写法:where e.deptno(+)=d.deptno
右外连接
例:按部门统计员工人数: 部门号 部门名称 人数(但是当部门没有人的时候就查不出数据,并且也不会显示部门,所以就要用到外连接)
select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数from emp e,dept d
where e.deptno(+)=d.deptno groupby d.deptno,d.dname;
部门号部门名称 人数
---------- -------------- ----------
10 ACCOUNTING 3
40 OPERATIONS 0
20 RESEARCH 5
30 SALES 6
自连接(Self join):将一张表看做是两张表,再用等值连接操作。
注:但是自连接有弊端,看成两张表就会产生笛卡尔集,并且是成倍增长的。因此自连接不适合操作大表。为了解决这个问题可以用到层次查询
例:查询员工信息:****的老板是****
select e.ename||'的老板是'||b.ename from emp e,emp b where e.mgr=b.empno;
层次查询
为了解决自连接不能操作大表,因此层次查询就查询一张表
SQL> select level,empno,ename,mgr level伪列(层次)
2 from emp
3 connect by prior empno=mgr connect by连接 prior前面的员工号等于后面的老板号
4 start with mgr is null; start with起始点(没有老板了)
- 关联查询(多表查询)
- 多表查询,嵌套查询
- 多表查询----连接查询
- 多表查询----合并查询
- 数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。
- 数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结
- 数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。
- 数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。
- 内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结转
- 复杂Oracle查询 限定查询+多表查询+统计查询+子查询
- SQL单表查询、多表查询、嵌套查询
- sql 复杂查询 多表查询 分页查询
- Hibernate数据库查询中DetachedCriteria数据库查询多表查询
- oracle 多表查询,子查询,集合运算,分页查询
- sql 多表查询,3表查询
- MySQL单表查询多表查询
- SQL中的多表查询查询
- SQL查询语句《三》:多表查询
- 网站变灰代码 兼容火狐浏览器的把网页变灰代码让网页变黑白
- JAVA正则表达式(详细)
- 实例崩溃恢复_转载
- 【Android】动态注册广播接收器
- Intent和PendingIntent的区别
- 多表查询
- Linux6配置multipaths多路径
- inode结构体成员详解
- [转载]Stanford华人教授李飞飞写给她学生的一封信,如何做好研究以及写好PA
- PHP的反射机制
- “时间会烧坏的东西”
- 二叉排序树
- boost库在工作(20)线程之五
- 过滤和排序