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代碼