按部就班學Oracle之限定查詢

在以前的簡單查詢之中,是將全部記錄進行顯示,可是如今能夠對顯示的記錄進行過濾的操做,而這就屬於查詢的工做了,限定查詢就是在以前語法的基礎上增長了一個WHERE子句,用於指定限定條件 ,此時語法以下:數據庫

SELECT [DISTINCT] *|字段 [別名] [字段] [別名]
FROM 表名稱 [別名]
[WHERE 條件]

在WHERE子句以後能夠增長多個條件,最多見的條件就是基本的關係運算:>、>=、<、<=、!=、BETWEEN……AND、LIKE、IN、IS NULL、AND、OR、NOT;ide

1、關係運算搜索引擎

SELECT * FROM emp having sal >1500 ;

範例1:要求查詢出基本工資高於1500的全部僱員信息
spa

clip_p_w_picpath002

附:如何縮小列距?col 字段名 format a103d

範例2:查詢出全部職位是辦事員的僱員信息orm

SELECT * FROM emp WHERE job='CLERK' ; //clerk必須大寫!

clip_p_w_picpath004

多個條件,而多條件之間可使用AND或OR進行鏈接操做。blog

範例3:查詢工資在1500-3000之間的所有僱員信息。索引

SELECT * FROM emp WHERE sal>=1500 AND sal<=3000 ;

clip_p_w_picpath006

方法2:利用BETWEEN …AND…語句查詢工資在1500-3000之間的所有僱員信息。ip

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;

clip_p_w_picpath008

範例4:查詢出職位是辦事員,或者是銷售人中的所有信息。開發

SELECT * FROM emp WHERE job='CLERK' OR job='SALESMAN' ;

clip_p_w_picpath010

範例5:查詢出職位是辦事員,或者是銷售人中的所有信息,而且要求這些僱員的工資大於1200

SELECT * FROM emp WHERE (job='CLERK' OR job='SALESMAN') AND sal>1200 ;

clip_p_w_picpath012

範例6: 查詢不是辦事員的僱員信息。

SELECT * FROM emp WHERE job!='CLERK'; //方法1
SELECT * FROM emp WHERE job<>'CLERK'; //方法2
SELECT * FROM emp WHERE Not job='CLERK'; //方法3

clip_p_w_picpath014

2、範圍判斷:BETWEEN …AND…

「BETWEEN 最小值AND 最大值」,表示的是一個範圍間的判斷過程。

範例7:要求查詢出基本工資在1500-3000之間的僱員信息。

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;

clip_p_w_picpath016

clip_p_w_picpath018

範例8如今對BETWEEN…AND…操做求反

SELECT * FROM emp WHERE NOT sal BETWEEN 1500 AND 3000 ;
SELECT * FROM emp WHERE NOT (sal BETWEEN 1500 AND 3000) ;

clip_p_w_picpath020

「BETWEE…AND…」操做符不光針對數字有用,對日期也一樣有用。

示例9:要求查詢出在1981年僱傭的所有信息

* 時間範圍:1981-01-01 – 1981-12-31,使用hiredate字段表示僱傭日期;

* hiredate字段上的內容可使用字符串表示:’01-1月-1981’ ~ ’31-12月-81’

SELECT * FROM emp WHERE hiredate BETWEEN '1-1月-1981' AND '31-12月-81'; //注意:查詢日期表示法!

clip_p_w_picpath022

3、判斷是否爲空:is(NOT)NULL

使用此語法能夠判斷某一個字段上的內容是否爲「null」,可是null和數字0以及空字符串是2個概念。

範例10: 查詢出全部領取獎金的僱員信息。

SELECT * FROM emp WHERE comm IS NOT NULL ; //方法1
SELECT * FROM emp WHERE NOT comm IS NULL ; //方法2

clip_p_w_picpath024

clip_p_w_picpath026

範例11:查詢出全部不領取獎金的僱員

SELECT * FROM emp WHERE comm IS NULL ;

clip_p_w_picpath028

4、指定範圍的判斷:IN操做符 (重要!)

IN操做符表示的是指定一個查詢的範圍,以下所示查詢要求:

範例12:查詢出僱員編號是736九、756六、7799的僱員信息

* 若是按照最先的作法,使用OR操做完成;

* 若是如今使用了新的操做符IN的話,則代碼簡單了:

SELECT * FROM emp WHERE empno=7369 OR empno=7566 OR empno=7799 ; //方法1
SELECT * FROM emp WHERE empno IN(7369,7566,7799); //方法2

clip_p_w_picpath030

而若是如今使用的是NOT IN呢?則表示不在指定的範圍之中。

SELECT * FROM emp WHERE empno NOT IN(7369,7566,7799) ;

clip_p_w_picpath032

注意:關於NOT NULL的問題!

* 若是如今使用了IN操做符,查詢的範圍之中存在了null,不影響查詢;

SELECT * FROM emp WHERE empno IN(7369,7566,null) ;

clip_p_w_picpath034

* 若是如今使用了NOT IN操做符,查詢的範圍之中存在了null,則不會有任何的查詢結果返回;

SELECT * FROM emp WHERE empno NOT IN(7369,7566,null) ;

clip_p_w_picpath036

重點:對於這個限制如今先做爲特色記住,之後會講解爲何NOT IN之中不能出現null,並且記住了

若是NOT IN中出現了null,則表示的就是查詢所有數據。

5、模糊查詢: LIKE子句

LIKE子句的功能是提供了模糊查找的操做,例如:某些程序上出現的搜索操做,都屬於LIKE子句的實現,可是必須提醒的,搜索引擎上的查詢可不是LIKE。

可是要想使用LIKE子句則必須認識兩個匹配符號:

* 匹配單個字符:_ ; -> 1 個

* 匹配任意多個字符:% ; -> 0個,1個,多個

範例13:要求查詢僱員姓名中以字母A開頭的所有僱員信息。

SELECT * FROM emp WHERE ename LIKE 'A%' ;

clip_p_w_picpath038

範例14:要求查詢出僱員姓名中第二個字母是A的所有信息。

SELECT * FROM emp WHERE ename LIKE '_A%' ;

clip_p_w_picpath040

範例15:要求查詢出僱員姓名中帶有字母A的僱員信息。

SELECT * FROM emp WHERE ename LIKE '%A%' ;

clip_p_w_picpath042

如今使用NOT操做,對操做進行求反的功能:

SELECT * FROM emp WHERE ename NOT LIKE '%A%' ;

clip_p_w_picpath044

可是對於LIKE子句,不必定只能在字符串數據上表示,能夠在任意的數據上表示:

SELECT * FROM emp WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%1$';

clip_p_w_picpath046

說明:關於LIKE子句的使用

在開發之中,數據庫的模糊查詢確定使用LIKE子句,可是在使用LIKE子句的時候有一個最大的注意點:若是在模糊查詢上不設置任意的查詢關鍵字的話(如:%%),則表示查詢所有記錄:

SELECT * FROM emp WHERE ename LIKE '%%' OR hiredate LIKE '%%' OR sal LIKE '%%' ;

clip_p_w_picpath048

   這一個特色能夠幫助用戶節約不少代碼,因此必定要記住!

相關文章
相關標籤/搜索