策划方案免费网站,副业做网站软件,杭州百度优化,中国商标交易官网目录
ANY
ANY #xff1a;功能上与 IN 是没有任何区别的 ANY #xff1a;比子查询返回的最小值要大 ALL
AL #xff1a;比子查询返回的最大值要大 EXISTS() 判断
NOT EXISTS Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209…目录
ANY
ANY 功能上与 IN 是没有任何区别的 ANY 比子查询返回的最小值要大 ALL
AL 比子查询返回的最大值要大 EXISTS() 判断
NOT EXISTS Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
在 WHERE 子句里面主要提供 3 个运算符 IN、ANY、ALL
前面讲了IN
ANY
ANY 操作实质上有 3 种子语法
ANY 功能上与 IN 是没有任何区别的
SQL select * from emp2 where salany(select sal from emp where jobMANAGER);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7566 JONES MANAGER 7839 02-4月 -81 2975 207698 BLAKE MANAGER 7839 01-5月 -81 2850 307782 CLARK MANAGER 7839 09-6月 -81 2450 10 ANY 比子查询返回的最小值要大
SQL select * from emp2 where salany(select sal from emp where jobMANAGER);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7839 KING PRESIDENT 17-11月-81 5000 107902 FORD ANALYST 7566 03-12月-81 3000 207566 JONES MANAGER 7839 02-4月 -81 2975 207698 BLAKE MANAGER 7839 01-5月 -81 2850 30 因为子查询中有 3 个值 2975、2850 和 2450最小的是 2450
所以
ANY 操作返回所有比 2450 大的记录
ANY 比子查询返回的最大的值要小
SQL select * from emp2 where salany(select sal from emp where jobMANAGER);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17-12月-80 800 207900 JAMES CLERK 7698 03-12月-81 950 307521 WARD SALESMAN 7698 22-2月 -81 1250 500 307654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 307934 MILLER CLERK 7782 23-1月 -82 1300 107844 TURNER SALESMAN 7698 08-9月 -81 1500 0 307499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307782 CLARK MANAGER 7839 09-6月 -81 2450 107698 BLAKE MANAGER 7839 01-5月 -81 2850 30 因为子查询中有 3 个值 2975、2850 和 2450最大的是 2975
所以
ANY 操作返回所有比 2975 小的记录
ALL
AL 操作有两种使用形式
AL 比子查询返回的最大值要大
SQL select * from emp2 where salALL(select sal from emp where jobMANAGER);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7902 FORD ANALYST 7566 03-12月-81 3000 207839 KING PRESIDENT 17-11月-81 5000 10
因为子查询中有 3 个值 2975、2850 和 2450最大的是 2975
所以
AL 操作返回所有比 2975 大的记录
AL 比子查询返回的最小值要小
SQL select * from emp2 where salALL(select sal from emp where jobMANAGER);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307844 TURNER SALESMAN 7698 08-9月 -81 1500 0 307934 MILLER CLERK 7782 23-1月 -82 1300 107521 WARD SALESMAN 7698 22-2月 -81 1250 500 307654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 307900 JAMES CLERK 7698 03-12月-81 950 307369 SMITH CLERK 7902 17-12月-80 800 20
因为子查询中有 3 个值 2975、2850 和 2450最小的是 2450
所以
AL 操作返回所有比 2450 小的记录
EXISTS() 判断
SQL SELECT * FROM emp2 WHERE EXISTS( SELECT * FROM emp WHERE empno7839) ;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17-12月-80 800 207499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307521 WARD SALESMAN 7698 22-2月 -81 1250 500 307566 JONES MANAGER 7839 02-4月 -81 2975 207654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 307698 BLAKE MANAGER 7839 01-5月 -81 2850 307782 CLARK MANAGER 7839 09-6月 -81 2450 107839 KING PRESIDENT 17-11月-81 5000 107844 TURNER SALESMAN 7698 08-9月 -81 1500 0 307900 JAMES CLERK 7698 03-12月-81 950 307902 FORD ANALYST 7566 03-12月-81 3000 207934 MILLER CLERK 7782 23-1月 -82 1300 108989 HELLO
因为子查询“ SELECT * FROM emp WHERE empno7839 ”有查询结果
所以 EXISTS() 就认为数据存在外部查询可以查询出内容
SQL select * from emp2 where exists(3 select hello from dual where 11);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17-12月-80 800 207499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307521 WARD SALESMAN 7698 22-2月 -81 1250 500 307566 JONES MANAGER 7839 02-4月 -81 2975 207654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 307698 BLAKE MANAGER 7839 01-5月 -81 2850 307782 CLARK MANAGER 7839 09-6月 -81 2450 107839 KING PRESIDENT 17-11月-81 5000 107844 TURNER SALESMAN 7698 08-9月 -81 1500 0 307900 JAMES CLERK 7698 03-12月-81 950 307902 FORD ANALYST 7566 03-12月-81 3000 207934 MILLER CLERK 7782 23-1月 -82 1300 108989 HELLO
EXISTS() 只关心子查询里面返回的是否有数据行至于是什么数据行它不关心
因此上面的查 询语句实现的效果也是查询出数据表 emp 中全部记录
NOT EXISTS
SQL select * from emp2 where NOT exists(3 select hello from dual where 12);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17-12月-80 800 207499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307521 WARD SALESMAN 7698 22-2月 -81 1250 500 307566 JONES MANAGER 7839 02-4月 -81 2975 207654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 307698 BLAKE MANAGER 7839 01-5月 -81 2850 307782 CLARK MANAGER 7839 09-6月 -81 2450 107839 KING PRESIDENT 17-11月-81 5000 107844 TURNER SALESMAN 7698 08-9月 -81 1500 0 307900 JAMES CLERK 7698 03-12月-81 950 307902 FORD ANALYST 7566 03-12月-81 3000 207934 MILLER CLERK 7782 23-1月 -82 1300 108989 HELLO