Oracle课件-03 连接与汇总.ppt_第1页
Oracle课件-03 连接与汇总.ppt_第2页
Oracle课件-03 连接与汇总.ppt_第3页
Oracle课件-03 连接与汇总.ppt_第4页
Oracle课件-03 连接与汇总.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AUTHOR: BAI CHUNCAI,DATE: 2003/02/20,DALIAN HAIHUI SCI-TECH,Oracle 数据库培训 (三),高级查询 表的连接 数据汇总,连接的功能: 从多个表取得数据合成一个结果集合,EMPNO DEPTNO LOC - - - 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO . 14 rows selected.,连接,EMP,DEPT,EMPNOENAME.DEPTNO-.- 7839KING. 1

2、0 7698BLAKE. 30 . 7934MILLER. 10,DEPTNO DNAME LOC - - 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON,连接,从多个表取得数据合成一个结果集合. 在 WHERE 子句中写连接条件. 需要表明列来自于哪个表.,SELECTtable1.column, table2.column FROMtable1, table2 WHEREtable1.column1 = table2.column2;,连接,等值连接,非等值连接,外连接,自连接,连接的种类:,等

3、值连接,EMP,DEPT,EMPNO ENAME DEPTNO - - - 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20 . 14 rows selected.,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTINGNEW YORK 20 R

4、ESEARCHDALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCHDALLAS 20 RESEARCHDALLAS . 14 rows selected.,等值连接,SQL SELECT emp.empno, emp.ename, emp.deptno, 2dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;,EMPNO ENAME DEPTNO DEPT

5、NO LOC - - - - - 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS . 14 rows selected.,等值连接举例,使用表的别名,使用表的别名可以简化查询语句.,SQL SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;,SQL SELECT e.em

6、pno, e.ename, e.deptno, 2 d.deptno, d.loc 3 FROM emp e, dept d 4 WHERE e.deptno=d.deptno;,非等值连接,EMP,SALGRADE,EMPNO ENAME SAL - - - 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 . 14 rows selected.,GRADE LOSAL HISAL - -

7、 - 1 7001200 2 12011400 3 14012000 420013000 5 30019999,非等值连接,ENAME SAL GRADE - - - JAMES 950 1 SMITH 800 1 ADAMS 1100 1 . 14 rows selected.,SQL SELECT e.ename, e.sal, s.grade 2FROMemp e, salgrade s 3WHERE e.sal 4BETWEEN s.losal AND s.hisal;,外连接,EMP,DEPT,ENAMEDEPTNO-KING10 BLAKE30 CLARK10 JONES20 .,

8、DEPTNO DNAME - - 10 ACCOUNTING 30 SALES 10 ACCOUNTING 20RESEARCH . 40OPERATIONS,外连接,使用外连接查看不符合连接条件的记录. 外连接的操作符为加号 (+).,SELECTtable.column, table.column FROMtable1, table2 WHEREtable1.column(+) = table2.column;,SELECTtable.column, table.column FROMtable1, table2 WHEREtable1.column = table2.column(+);

9、,外连接,SQL SELECTe.ename, d.deptno, d.dname 2 FROMemp e, dept d 3 WHEREe.deptno(+) = d.deptno 4 ORDER BYe.deptno;,ENAME DEPTNO DNAME - - - KING 10 ACCOUNTING CLARK 10 ACCOUNTING . 40 OPERATIONS 15 rows selected.,自连接,EMP (WORKER),EMP (MANAGER),EMPNOENAME MGR- 7839KING 7698BLAKE7839 7782CLARK7839 7566JO

10、NES7839 7654MARTIN7698 7499ALLEN7698,EMPNOENAME- 7839KING 7839KING 7839KING 7698BLAKE 7698BLAKE,自连接,WORKER.ENAME|WORKSFOR|MANAG - BLAKE works for KING CLARK works for KING JONES works for KING MARTIN works for BLAKE . 13 rows selected.,SQL SELECT worker.ename| works for |manager.ename 2 FROM emp wor

11、ker, emp manager 3 WHERE worker.mgr = manager.empno;,数据汇总,汇总,汇总函数操作结果集合给出运算结果.,EMP,“求EMP表中 salary列的最大值”,DEPTNO SAL - - 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250,MAX(SAL) - 5000,汇总函数,AVG 平均值 COUNT 行数 MAX 最大值 MIN 最小值 STDDEV 标准偏差 SUM 和

12、,汇总函数,SELECTcolumn, group_function(column) FROMtable WHEREcondition ORDER BYcolumn;,汇总函数,AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) - - - - 1400 1600 1250 5600,例1:,SQL SELECTAVG(sal), MAX(sal), 2MIN(sal), SUM(sal) 3FROMemp 4WHEREjob LIKE SALES%;,汇总函数,例2:,SQL SELECTMIN(hiredate), MAX(hiredate) 2 FROMemp;,MI

13、N(HIRED MAX(HIRED - - 17-DEC-80 12-JAN-83,汇总函数,COUNT(*) - 6,SQL SELECTCOUNT(*) 2 FROMemp 3 WHEREdeptno = 30;,COUNT(*) 取得结果集合行数.,汇总函数,COUNT(列)取得结果集合中 当列非空的行数,SQL SELECTCOUNT(comm) 2 FROMemp 3 WHEREdeptno = 30;,COUNT(COMM) - 4,汇总函数,汇总函数忽略结果集合中的空值.,SQL SELECT AVG(comm) 2 FROM emp;,AVG(COMM) - 550,汇总,EM

14、P,“取得每个部门 的平均工资值”,DEPTNO SAL - - 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250,DEPTNO AVG(SAL) - - 10 2916.6667 20 2175 30 1566.6667,汇总,SELECTcolumn, group_function(column) FROMtable WHEREcondition GROUP BYgroup_by_expression ORDER BYco

15、lumn;,使用GROUP BY子句,可以将表中的行分成多个较小的组,汇总,在SELECT的所选列中,如果不出现在汇总函数中,则必须出现在GROUP BY子句中.,SQL SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno;,DEPTNO AVG(SAL) - - 10 2916.6667 20 2175 30 1566.6667,汇总,The GROUP BY 子句的列不必出现在SELECT的选择列表中.,SQL SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno;,AVG(SAL) - 2916.6

16、667 2175 1566.6667,汇总,这是一个错误的查询.,SQL SELECTdeptno, COUNT(ename) 2 FROMemp;,SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function,Deptno列必须出现在Group by子句中,汇总,EMP,“按部门求 工资的和”,DEPTNO JOB SAL - - - 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK

17、 1100 20 ANALYST 3000 20 ANALYST 3000 20 MANAGER 2975 30 SALESMAN 1600 30 MANAGER 2850 30 SALESMAN 1250 30 CLERK 950 30 SALESMAN 1500 30 SALESMAN 1250,JOB SUM(SAL) - - CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600,DEPTNO - 10 10 10 2

18、0 20 20 30 30 30,汇总,SQL SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job;,DEPTNO JOB SUM(SAL) - - - 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900 . 9 rows selected.,汇总,WHERE 子句中不允许出现汇总函数. 汇总后的结果必须使用 HAVING 子句.,SQL SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) 2000 4 GROUP BY deptno;,WHERE AVG(sal) 2000 * ERROR at line 3: ORA-00934: group function is not allowed here,AVG(sal)不允许出现在 WHERE子句中,汇总,“取出最大值 超过2900的 部门的最大值”,EMP,DEPTNO SAL - - 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论