设为首页 加入收藏

TOP

Oracle学习(五):多表查询(二)
2015-07-24 10:38:55 来源: 作者: 【 】 浏览:4
Tags:Oracle 学习 查询
ere e.sal between s.losal and s.hisal; ENAME SAL GRADE ---------- ----- ---------- SMITH 800 1 JAMES 950 1 ADAMS 1100 1 WARD 1250 2 MARTIN 1250 2 MILLER 1300 2 TURNER 1500 3 ALLEN 1600 3 CLARK 2450 4 BLAKE 2850 4 JONES 2975 4 ENAME SAL GRADE ---------- ----- ---------- SCOTT 3000 4 FORD 3000 4 KING 5000 5 已选择14行。 SQL> host cls SQL> --外连接 SQL> --按部门统计员工人数: 部门号 部门名称 人数 SQL> select d.deptno,d.dname,count(e.empno) 2 from dept d,emp e 3 where d.deptno=e.deptno 4 group by d.deptno,d.dname; DEPTNO DNAME COUNT(E.EMPNO) ---------- -------------- -------------- 10 ACCOUNTING 3 20 RESEARCH 5 30 SALES 6 SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> select * from emp where deptno=40; 未选定行 SQL> /* SQL> 外连接解决的问题:当条件不成立时,任然希望在结果中包含不成立的记录 SQL> 左外连接: where d.deptno=e.deptno 当不成立时,等号左边代表的表的信息任然被包含 SQL> 写法: where d.deptno=e.deptno(+) SQL> 右外连接: where d.deptno=e.deptno 当不成立时,等号右边代表的表的信息任然被包含 SQL> 写法:where d.deptno(+)=e.deptno SQL> */ SQL> select d.deptno,d.dname,count(e.empno) 2 from dept d,emp e 3 where d.deptno=e.deptno(+) 4 group by d.deptno,d.dname; DEPTNO DNAME COUNT(E.EMPNO) ---------- -------------- -------------- 10 ACCOUNTING 3 40 OPERATIONS 0 20 RESEARCH 5 30 SALES 6 SQL> ed 已写入 file afiedt.buf 1 select d.deptno,d.dname,count(e.empno) 2 from dept d,emp e 3 where d.deptno=e.deptno(+) 4 group by d.deptno,d.dname 5* order by 1 SQL> / DEPTNO DNAME COUNT(E.EMPNO) ---------- -------------- -------------- 10 ACCOUNTING 3 20 RESEARCH 5 30 SALES 6 40 OPERATIONS 0 SQL> host cls SQL> --自连接 SQL> --查询员工信息:***的老板是*** SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ----- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 13-7月 -87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7876 ADAMS CLERK 7788 13-7月 -87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ----- ---------- ---------- 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10 已选择14行。 SQL> select e.ename||'的老板是'||b.ename 2 from emp e,emp b 3 where e.mgr=b.empno; E.ENAME||'的老板是'||B.ENAME ---------------------------- FORD的老板是JONES SCOTT的老板是JONES JAMES的老板是BLAKE TURNER的老板是BLAKE MARTIN的老板是BLAKE WARD的老板是BLAKE ALLEN的老板是BLAKE MILLER的老板是CLARK ADAMS的老板是SCOTT CLARK的老板是KING BLAKE的老板是KING E.ENAME||'的老板是'||B.ENAME ---------------------------- JONES的老板是KING SMITH的老板是FORD 已选择13行。 SQL> --自连接:利用表的别名,将同一张表视为多张表 SQL> --层次查询 SQL> --自连接不太适合操作大表 SQL> SQL> SQL> SQL> --层次查询: 对同一张表的前后两次操作,进行连接 SQL> select level,empno,ename,mgr 2 from emp 3 connect by prior empno=mgr 4 start with mgr is null 5 order by 1; LEVEL EMPNO
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇RMAN的"rman: can't ope.. 下一篇oracle case when exists()

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·TCP/UDP协议_百度百科 (2025-12-26 12:20:11)
·什么是TCP和UDP协议 (2025-12-26 12:20:09)
·TCP和UDP详解 (非常 (2025-12-26 12:20:06)
·Python 教程 - W3Sch (2025-12-26 12:00:51)
·Python基础教程,Pyt (2025-12-26 12:00:48)