oracle从2张表查数据库,Oracle数据库之多表查询

Oracle数据库总结:

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数据库总结:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值