比较运算符:> 大于,< 小于
>= 大于等于,<= 小于等于
= 等于,!=,<>,^= 不等于
逻辑运算符运算的优先顺序:NOT > AND > OR (如果要改变优先顺序,可以使用括号)
特殊运算符 :
[NOT] BETWEEN…AND…:用于测试是否在范围内;
[NOT] IN (…):用于测试是否在列表中;
[NOT] LIKE:用于进行模式匹配;
IS [NOT] NULL:用于测试是否为空值;
ANY SOME:同列表或查询中的每一个值进行比较,测试是否有一个满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 ALL:同列表或查询中的每一个值进行比较,测试是否所有的值都满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等;
[NOT] EXISTS:测试是否子查询至少返回一行;
IN的用法:使用以下运算形式,可以显示值满足特定集合的结果: [NOT] IN (...) 显示职务为“SALESMAN‘,“CLERK”和“MANAGER”的雇员信息。 输入并执行查询:
SELECT * FROM emp WHERE job IN (‘SALESMAN‘,‘CLERK‘,‘MANAGER‘);
注意:如果在IN前面增加NOT,将显示职务不在集合列表中的雇员。以上用法同样适用于数值型集合。
多行子查询:
如果子查询返回多行的结果,则我们称它为多行子查询。多行子查询要使用不同的比较运算符号,它们是IN、ANY和ALL。 查询工资低于任何一个“CLERK”的工资的雇员信息。 执行以下查询:
SELECT empno, ename, job,sal FROM emp WHERE sal < ANY (SELECT sal FROM emp WHERE job = ‘CLERK‘) AND job <> ‘CLERK‘;
说明:在emp表的雇员中有4个职务为“CLERK”,他们的工资分别是800、1100、950、1300。满足工资小于任何一个“CLERK”的工资的记录有2个,在这里使用了ANY运算符表示小于子查询中的任何一个工资。 注意:条件job <> ‘CLERK‘排除了职务是CLERK的雇员本身。
查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。 执行以下查询:
select empno, ename, sal from emp
where sal > all (select sal from emp where job = ‘SALESMAN‘)
说明:在emp表的雇员中有4个职务为“SALESMAN”,他们的工资分别是1600、1250、1250、1500。在这里使用了ALL运算符,表示大于查询中所有的工资。
查询部门20中职务同部门10的雇员一样的雇员信息。 执行以下查询:
SELECT empno, ename, job FROM emp
WHERE job IN (SELECT job FROM emp WHERE deptno=10)
AND deptno =20;
说明:在该训练中,使用IN运算符表示职务是子查询结果中的任何一个。部门10中有3种职务:MANAGER、PRESIDENT和CLERK,以上查询得到的是部门20中是这3种职务的雇员。
多列子查询 如果子查询返回多列,则对应的比较条件中也应该出现多列,这种查询称为多列子查询。以下是多列子查询的训练实例。 查询职务和部门与SCOTT相同的雇员的信息。 执行以下查询:
SELECT empno, ename, sal FROM emp
WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788);
注:以上内容摘抄 WNFY 的博客 随笔 - 5,文章 - 1,仅作为学习笔记。