OracleSQL 比较运算符 >,<:大于,小于 >=.<=:大于等于,小于等于 =:等于 !=,<>,^=:不等于 逻辑运算符运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号 逻辑运算符 AND:逻辑与,表示两个条件必须同时满足 OR:逻辑或,表示两个条件中有一个条件满足即可 NOT:逻辑非,返回与某条件相反的结果 特殊运算符 [NOT] BETWEEN…AND…:用于测试是否在范围内 [NOT] IN (…):用于测试是否在列表中 [NOT] LIKE:用于进行模式匹配 IS [NOT] NULL:用于测试是否为空值 ANY SOME:同列表或查询中的每一个值进行比较,测试是否有一个满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 ALL:同列表或查询中的每一个值进行比较,测试是否所有的值都满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 [NOT] EXISTS:测试是否子查询至少返回一行 IN的用法 使用以下运算形式,可以显示值满足特定集合的结果: [NOT] IN (...) 显示职务为“SALESMAN',“CLERK”和“MANAGER”的雇员信息。 输入并执行查询: Sql代码
SELECT * FROM emp WHERE job IN ('SALESMAN','CLERK','MANAGER');
SELECT * FROM emp WHERE job IN ('SALESMAN','CLERK','MANAGER'); 执行结果从略。 注意:如果在IN前面增加NOT,将显示职务不在集合列表中的雇员。以上用法同样适用于数值型集合, 多行子查询 如果子查询返回多行的结果,则我们称它为多行子查询。多行子查询要使用不同的比较运算符号,它们是IN、ANY和ALL。 查询工资低于任何一个“CLERK”的工资的雇员信息。 执行以下查询: Sql代码
SELECT empno, ename, job,sal FROM emp
WHERE sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK')
AND job <> 'CLERK';
SELECT empno, ename, job,sal FROM empWHERE sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK')AND job <> 'CLERK'; 执行结果为: Sql代码
EMPNO ENAME SAL---------------- ------------- -----------------------7566 JONES 29757698 BLAKE 28507782 CLARK 24507788 SCOTT 30007839 KING 50007902 FORD 3000 说明:在emp表的雇员中有4个职务为“SALESMAN”,他们的工资分别是1600、1250、1250、1500。在这里使用了ALL运算符,表示大于查询中所有的工资。 查询部门20中职务同部门10的雇员一样的雇员信息。 执行以下查询: Sql代码
SELECT empno, ename, job FROM emp
WHERE job IN (SELECT job FROM emp WHERE deptno=10)
AND deptno =20;
SELECT empno, ename, job FROM emp
WHERE job IN (SELECT job FROM emp WHERE deptno=10)
AND deptno =20; 执行结果为: Sql代码
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------------- -------------- ------------------------- ---------- ------------------ ----------- ------------ ------------------
7369 SMITH CLERK 7902 17-12月-80 800 20
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 说明:SMITH和SCOTT名字均以S开头,名字后边的字符和长度任意。 显示姓名第二个字符为“A”的雇员信息。 执行查询: Sql代码
SELECT * FROM emp WHERE ename LIKE'_A%';
SELECT * FROM emp WHERE ename LIKE '_A%'; 说明:“_”代表第一个字符任意,第二个字符必须为“A”,“%”代表第二个字符后面的字符为任意字符,个数任意。 判断空值NULL 在表中,字段值可以是空,表示该字段没有内容。如果不填写,或设置为空则我们说该字段的内容为NULL。NULL没有数据类型,也没有具体的值,但是使用特定运算可以判断出来。这个运算就是: IS [NOT] NULL 显示经理编号没有填写的雇员。 输入并执行查询: Sql代码
SELECT ename, mgr FROM emp WHERE mgr ISNULL;
SELECT ename, mgr FROM emp WHERE mgr IS NULL; 执行结果为: Sql代码
ENAME MGR
------------ ---------------
KING
ENAME MGR------------ ---------------KING 注意:以下用法是错误的。 SELECT ename, mgr FROM emp WHERE mgr=NULL;