Oracle子查询详解
Jun 07, 2016 pm 05:12 PMOracle子查询详解,根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
子查询概念 :当一个查询的结果是另一个查询的条件时,,称之为子查询。
使用子查询注意事项:
子查询可以嵌套多层
子查询需要圆括号()括起来
子查询语法:
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
l 子查询 (内查询) 在主查询之前一次执行完成。
l 子查询的结果被主查询使用 (外查询)。
举例:查询员工的工资大于JONES的员工信息
分析过程如下:
首先:查询JONES的员工工资是多少 :结果2975
SQL> select sal from emp where ename='JONES';
实际上我们要查询的是:薪资大于2975的员工的信息写法如下:
SQL> select * from emp where sal>2975;
//综合以上写出子查询的结果如下:
SQL> select * from emp where sal>(select sal from emp where ename='JONES');
注意:
l 子查询要包含在括号内。
l 将子查询放在比较条件的右侧。
根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
注意:
l 单行操作符对应单行子查询,多行操作符对应多行子查询。
单行操作符
>、>=、 、=
举例:
//查询编号7876相同职位的员工信息 并且薪资大于编号为7521的薪资的员工信息
SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);
//子查询含有组函数
SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
//子查询含有having子句查询部门的最小工资大于20号部门最小工资的部门号及最小工资数
SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
备注:子查询可以返回空行 没要查询到结果是可以的。
多行子查询
l 返回多行。
l 使用多行比较操作符。
操作符如下图:
操作符
描述
In
等于列表中的任何一个
Any
子查询返回的任意一个值比较 相同还有some
All
和子查询返回的所有值比较
Exists
//查询薪水小于工作岗位CLERK的任何一个薪资的员工信息并且不包含工作岗位为CLERK的员工信息
SQL> select * from emp where sal 'CLERK';
//all与所有值比较 >all 代表的是大于查询结果的最大值
SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job'CLERK';
//查询岗位与部门编号为10相同的员工信息 不包含自己。
SQL> select * from emp where job in(select job from emp where deptno=10) and deptno10;

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data?

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP

Perbandingan persamaan dan perbezaan antara MySQL dan PL/SQL

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik?

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak

Analisis prinsip asas sistem pengurusan pangkalan data MySQL

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP
