Oracle数据库之多表查询

oracle安装参照: Oracle数据库之安装教程

Oracle数据库总结:

Oracle数据库之基本查询
Oracle数据库之单行函数
Oracle数据库之多行函数
Oracle数据库之多表查询
SQL> --等值连接
SQL> --查询员工信息:员工号 姓名 月薪 部门名称

SQL> select e.empno,e.ename,e.sal,d.dname
2 from emp e,dept d
3 where e.deptno=d.deptno;

  EMPNO ENAME             SAL DNAME                                                              
---------- ---------- ---------- --------------                                                     
      7369 SMITH             800 RESEARCH                                                           
      7499 ALLEN            1600 SALES                                                              
      7521 WARD             1250 SALES                                                              
      7566 JONES            2975 RESEARCH                                                           
      7654 MARTIN           1250 SALES                                                              
      7698 BLAKE            2850 SALES                                                              
      7782 CLARK            2450 ACCOUNTING                                                         
      7788 SCOTT            3000 RESEARCH                                                           
      7839 KING             5000 ACCOUNTING                                                         
      7844 TURNER           1500 SALES                                                              
      7876 ADAMS            1100 RESEARCH                                                           

     EMPNO ENAME             SAL DNAME                                                              
---------- ---------- ---------- --------------                                                     
      7900 JAMES             950 SALES                                                              
      7902 FORD             3000 RESEARCH                                                           
      7934 MILLER           1300 ACCOUNTING                                                         

SQL> --不等值连接
SQL> --查询员工信息:员工号 姓名 月薪 工资级别
SQL> select * from salgrade;

 ***GRADE      LOSAL      HISAL                                                                    

     1        700       1200                                                                    
     2       1201       1400                                                                    
     3       1401       2000                                                                    
     4       2001       3000                                                                    
     5       3001       9999***                                                                    

SQL> select e.empno,e.ename,e.sal,s.grade
2 from emp e,salgrade s
3 where e.sal between s.losal and s.hisal;

 ***EMPNO ENAME             SAL      GRADE                                                         

  7369 SMITH             800          1                                                         
  7900 JAMES             950          1                                                         
  7876 ADAMS            1100          1                                                         
  7521 WARD             1250          2                                                         
  7654 MARTIN           1250          2                                                         
  7934 MILLER           1300          2                                                         
  7844 TURNER           1500          3                                                         
  7499 ALLEN            1600          3                                                         
  7782 CLARK            2450          4                                                         
  7698 BLAKE            2850          4                                                         
  7566 JONES            2975          4                                                         
 EMPNO ENAME             SAL      GRADE                                                         

  7788 SCOTT            3000          4                                                         
  7902 FORD             3000          4                                                         
  7839 KING             5000          5***                                                         

SQL> --外连接
SQL> --按部门统计员工人数:部门号 部门名称 人数
SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
2 from emp e,dept d
3 where e.deptno=d.deptno
4 group by d.deptno,d.dname;

***部门号 部门名称             人数                                                                

    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> /
SQL> 外连接:某些不成立的记录,通过外连接依然可以包含在最后的结果中
SQL> 左外连接:当where e.deptno=d.deptno不成立的时候,等号左边的表任然包含在最后的结果中
SQL> 写法:where e.deptno=d.deptno(+)
SQL> 右外连接:当where e.deptno=d.deptno不成立的时候,等号右边的表任然包含在最后的结果中
SQL> 写法: where e.deptno(+)=d.deptno
SQL> /

SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
2 from emp e,dept d
3 where e.deptno(+)=d.deptno
4 group by d.deptno,d.dname;

    部门号 部门名称             人数                                                                
---------- -------------- ----------                                                                
        10 ACCOUNTING              3                                                                
        40 OPERATIONS              0                                                                
        20 RESEARCH                5                                                                
        30 SALES                   6                                                                

SQL> --自连接
SQL> --查询员工信息: 员工的名字 老板的名字
SQL> --自连接:通过表的别名,将同一张表视为多张表
SQL> select e.ename 员工的名字,b.ename 老板名字
2 from emp e,emp b
3 where e.mgr=b.empno;

员工的名字 老板名字                                                                                                                                                                                     
---------- ----------                                                                                                                                                                                   
FORD       JONES                                                                                                                                                                                        
SCOTT      JONES                                                                                                                                                                                        
JAMES      BLAKE                                                                                                                                                                                        
TURNER     BLAKE                                                                                                                                                                                        
MARTIN     BLAKE                                                                                                                                                                                        
WARD       BLAKE                                                                                                                                                                                        
ALLEN      BLAKE                                                                                                                                                                                        
MILLER     CLARK                                                                                                                                                                                        
ADAMS      SCOTT                                                                                                                                                                                        
CLARK      KING                                                                                                                                                                                         
BLAKE      KING                                                                                                                                                                                         

员工的名字 老板名字                                                                                                                                                                                     
---------- ----------                                                                                                                                                                                   
JONES      KING                                                                                                                                                                                         
SMITH      FORD                                                 

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 ENAME             MGR                                                                                                                                                             
---------- ---------- ---------- ----------                                                                                                                                                             
         1       7839 KING                                                                                                                                                                              
         2       7566 JONES            7839                                                                                                                                                             
         2       7698 BLAKE            7839                                                                                                                                                             
         2       7782 CLARK            7839                                                                                                                                                             
         3       7902 FORD             7566                                                                                                                                                             
         3       7521 WARD             7698                                                                                                                                                             
         3       7900 JAMES            7698                                                                                                                                                             
         3       7934 MILLER           7782                                                                                                                                                             
         3       7499 ALLEN            7698                                                                                                                                                             
         3       7788 SCOTT            7566                                                                                                                                                             
         3       7654 MARTIN           7698                                                                                                                                                             

     LEVEL      EMPNO ENAME             MGR                                                                                                                                                             
---------- ---------- ---------- ----------                                                                                                                                                             
         3       7844 TURNER           7698                                                                                                                                                             
         4       7876 ADAMS            7788                                                                                                                                                             
         4       7369 SMITH            7902                                                                                                                                                             

更多可以参看

Oracle数据库总结:

Oracle数据库之集合运算
Oracle数据库之数据处理
Oracle数据库之建表和管理表
Oracle数据库之对象视图、索引、序列、同义词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello-java-maker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值