美文网首页
Oracle 数据库高级查询语句方法

Oracle 数据库高级查询语句方法

作者: 82a7fe2508f4 | 来源:发表于2022-09-16 10:01 被阅读0次

1.等值连接

SQL> ---查询出员工和员工的部门的名称是什么(涉及两个表emp,dept的联合查询,找等值条件  emp.deptno = dept.deptno)

SQL> ---1.等值查询

SQL> select e.*,d.dname from emp e,dept d where e.deptno = d.deptno;

笛卡尔积,笛卡尔积(没有等值条件) emp 14条 dept 4条 结果 14*4 = 56条记录

SQL> select e.empno,e.ename,d.dname from emp e,dept d;

内连接(和等值查询的结果一样) inner join

SQL> select e.empno,e.ename,d.dname from emp e inner join dept d on e.deptno = d.deptno;

外连接 left [outer] join 左外联,right [outer] join 右外联,full join完全连接

left [outer] join 左外联:

rows selected

SQL> ----3.left [outer] join 左外联,以左表为准 emp e left join dept d,left join左边的emp为左表,left join右边 dept为右表

SQL> 左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示(注意:查询结果合理,实战中推荐使用左外联)

左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示

SQL> select e.empno,e.ename,d.dname from emp e left join dept d on e.deptno = d.deptno;

right [outer] join 右外联,右外联,以右表dept为准,不管关联的字段deptno是否在左表emp中是否有对应的数据,右表dept的数据全部要显示,坐标emp中关联的deptno为null的记录不显示

full [outer] join 完全连接 都要显示左表和右表的数据,不管左表emp的关联字段deptno为null,还是右表dept的数据deptno=40被左表emp引用(注意:mysql不支持)

联合查询中的三表联合查询

SQL> select e.empno,e.ename,e.job,e.sal,d.dname,g.grade

  2  from emp e

  3  left join dept d on e.deptno = d.deptno

  4  left join salgrade g on e.sal between g.losal and g.hisal

  5  order by e.empno

  6  ;

如何使用(+)进行多表查询(注意:该语法在别的数据库不支持,所以不通用,不推荐使用)

SQL> select e.empno, e.ename, d.deptno, d.dname

  2  from emp e, dept d

  3  where e.deptno(+) = d.deptno;

EMPNO ENAME      DEPTNO DNAME

----- ---------- ------ --------------

7499 ALLEN          30 SALES

7521 WARD          30 SALES

7566 JONES          20 RESEARCH

7654 MARTIN        30 SALES

7698 BLAKE          30 SALES

7782 CLARK          10 ACCOUNTING

7788 SCOTT          20 RESEARCH

7844 TURNER        30 SALES

7876 ADAMS          20 RESEARCH

7900 JAMES          30 SALES

7902 FORD          20 RESEARCH

7934 MILLER        10 ACCOUNTING

7839 KING          10 ACCOUNTING

                    40 OPERATIONS

14 rows selected

使用using来实现联合查询

SQL> select e.empno,e.ename,d.deptno,d.dname from emp e inner join  dept d using(deptno);

select e.empno,e.ename,d.deptno,d.dname from emp e inner join  dept d using(deptno)

ORA-25154: USING 子句的列部分不能有限定词

SQL> select e.empno,e.ename,deptno,d.dname from emp e inner join  dept d using(deptno);

EMPNO ENAME      DEPTNO DNAME

----- ---------- ------ --------------

7499 ALLEN          30 SALES

7521 WARD          30 SALES

7566 JONES          20 RESEARCH

7654 MARTIN        30 SALES

7698 BLAKE          30 SALES

7782 CLARK          10 ACCOUNTING

7788 SCOTT          20 RESEARCH

7844 TURNER        30 SALES

7876 ADAMS          20 RESEARCH

7900 JAMES          30 SALES

7902 FORD          20 RESEARCH

7934 MILLER        10 ACCOUNTING

7839 KING          10 ACCOUNTING

13 rows selected

SQL>

相关文章

  • Oracle 数据库高级查询语句方法

    1.等值连接 SQL> ---查询出员工和员工的部门的名称是什么(涉及两个表emp,dept的联合查询,找等值条件...

  • Oracle数据库学习整理(一)

    Oracle 基础知识 查询数据 本节将学习如何从Oracle数据库中查询数据。 ●Select语句-演示如何查询...

  • Oracle高级语句书目录

    Oracle高级语句之with as Oracle高级语句之merge into Oracle高级语句之row_n...

  • GreenDao

    前言:数据库:MySQL、Oracle、Sqlite 一. 复习SQL语句(结构化查询语言) 1.SQL语句分类 ...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • GreenDao

    数据库:MySQL、Oracle、Sqlite 一. 复习SQL语句(结构化查询语言) 1.SQL语句分类 DDL...

  • SQL之WHERE语句

    SQL语句是数据库查询语句,可以应用在各种数据库操作软件中,比如Mysql,Oracle,因此SQL语句学一套就基...

  • Oracle 基础知识

    查询数据 本节将学习如何从Oracle数据库中查询数据。 ●Select语句-演示如何查询单个表中的数据。 排序数...

  • plsql客户端使用like 中文查不到结果

    问题描述:客户端,plsql(试过各个版本);数据库,oracle查询语句:select * from table...

  • SQL - Select / Create

    ORACLE 12c 中 SQL Server Select 语句从数据库中调出数据,是一种查询语句 1:必须要有...

网友评论

      本文标题:Oracle 数据库高级查询语句方法

      本文链接:https://www.haomeiwen.com/subject/zchjortx.html