Oracle系列:(13)多表查询
2016-09-07 20:28
295 查看
多表查询,包括等值连接、非等值连接、外连接、自连接。
内连接,包括等值连接 和 非等值连接。
员工表emp和部门表dept的笛卡尔集(笛卡尔集表=列数之和,行数之积,笛卡尔集表内中有些数据是不符合要求的)
使用等值连接/内连接(只能使用=号),显示员工的编号,姓名,部门名,使用表别名简化
使用非等值连接(不能使用=号,其它符号可以,例如:>=,<=,<>,betwen and等),显示员工的编号,姓名,月薪,工资级别
使用外连接,按部门10,20,30,40号,统计各部门员工人数,要求显示部门号,部门名,人数
部门号 部门名 人数
10 ACCOUNTING 3
20 RESEARCH 5
30 SALES 6
40 OPERATIONS 0
等值连接/非等值连接/内连接:只会查询出多张表中,根据某个字段匹配,符合条件的记录,不符合条件的记录是不会存在的
左外连接[是oracle专用的,不是SQL99规则]:
右外连接:
使用左外连接,按部门10,20,30,40号,统计各部门员工人数,要求显示部门号,部门名,人数,且按人数降序排列
使用自连接,显示"SMITH的上级是FORD"这种格式
基于上述问题,将KING的上级是“”显示出来
注意:自连接也用到内连接和外连接
内连接,包括等值连接 和 非等值连接。
员工表emp和部门表dept的笛卡尔集(笛卡尔集表=列数之和,行数之积,笛卡尔集表内中有些数据是不符合要求的)
select emp.ename,dept.dname from emp,dept;
使用等值连接/内连接(只能使用=号),显示员工的编号,姓名,部门名,使用表别名简化
select emp.empno,emp.ename,dept.dname,dept.deptno from emp,dept where emp.deptno = dept.deptno;
使用非等值连接(不能使用=号,其它符号可以,例如:>=,<=,<>,betwen and等),显示员工的编号,姓名,月薪,工资级别
select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
内连接查询:只能查询出符合条件的记录外连接查询:既能查询出符合条件的记录,也能根据一方强行将另一个方查询出来 |
部门号 部门名 人数
10 ACCOUNTING 3
20 RESEARCH 5
30 SALES 6
40 OPERATIONS 0
等值连接/非等值连接/内连接:只会查询出多张表中,根据某个字段匹配,符合条件的记录,不符合条件的记录是不会存在的
左外连接[是oracle专用的,不是SQL99规则]:
select dept.deptno "部门号",dept.dname "部门名",count(emp.empno) "人数" from dept,emp where dept.deptno = emp.deptno(+) group by dept.deptno,dept.dname;
右外连接:
select dept.deptno "部门号",dept.dname "部门名",count(emp.empno) "人数" from dept,emp where emp.deptno(+) = dept.deptno group by dept.deptno,dept.dname;
使用左外连接,按部门10,20,30,40号,统计各部门员工人数,要求显示部门号,部门名,人数,且按人数降序排列
select dept.deptno "部门号",dept.dname "部门名",count(emp.empno) "人数" from dept,emp where dept.deptno = emp.deptno(+) group by dept.deptno,dept.dname order by 3 desc;
使用自连接,显示"SMITH的上级是FORD"这种格式
select users.ename || '的上级是' ||boss.ename from emp users,emp boss where users.mgr = boss.empno;只有13条记录,不含有KING
基于上述问题,将KING的上级是“”显示出来
select users.ename || '的上级是' ||boss.ename from emp users,emp boss where users.mgr = boss.empno(+);14条记录
注意:自连接也用到内连接和外连接
相关文章推荐
- ORACLE HANDBOOK系列之三:树状结构查询(Hierarchical Queries)
- [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)
- oracle系列笔记(2)---多表查询
- oracle系列笔记(2)---多表查询
- oracle系列笔记(1)---查询数据
- ORACLE SQL性能优化系列(13)
- .Net程序员学用Oracle系列(14):子查询、集合查询
- .Net程序员学用Oracle系列(14):子查询、集合查询
- [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)
- Oracle DBA课程系列笔记(13)
- Oracle EBS-SQL (SYS-13):查询DBA在系统中的打Patch的信息.SQL
- oracle系列笔记(1)---查询数据
- Oracle系列:(15)集合查询
- [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)
- 【Oracle入门系列】第03章_数据库查询基础
- ETL系列:开发人员常用oracle的查询语句
- .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
- .Net程序员学用Oracle系列(14):子查询、集合查询
- .Net程序员学用Oracle系列(20):层次查询(CONNECT BY)
- oracle分析函数系列之Top/Bottom N、min() keep First/Last、NTile:排名空处理,查询第一名,最后一名