在以前的簡單查詢之中,是將全部記錄進行顯示,可是如今能夠對顯示的記錄進行過濾的操做,而這就屬於查詢的工做了,限定查詢就是在以前語法的基礎上增長了一個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
附:如何縮小列距?col 字段名 format a103d
範例2:查詢出全部職位是辦事員的僱員信息orm
SELECT * FROM emp WHERE job='CLERK' ; //clerk必須大寫!
多個條件,而多條件之間可使用AND或OR進行鏈接操做。blog
範例3:查詢工資在1500-3000之間的所有僱員信息。索引
SELECT * FROM emp WHERE sal>=1500 AND sal<=3000 ;
方法2:利用BETWEEN …AND…語句查詢工資在1500-3000之間的所有僱員信息。ip
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;
範例4:查詢出職位是辦事員,或者是銷售人中的所有信息。開發
SELECT * FROM emp WHERE job='CLERK' OR job='SALESMAN' ;
範例5:查詢出職位是辦事員,或者是銷售人中的所有信息,而且要求這些僱員的工資大於1200
SELECT * FROM emp WHERE (job='CLERK' OR job='SALESMAN') AND sal>1200 ;
範例6: 查詢不是辦事員的僱員信息。
SELECT * FROM emp WHERE job!='CLERK'; //方法1 SELECT * FROM emp WHERE job<>'CLERK'; //方法2 SELECT * FROM emp WHERE Not job='CLERK'; //方法3
2、範圍判斷:BETWEEN …AND…
「BETWEEN 最小值AND 最大值」,表示的是一個範圍間的判斷過程。
範例7:要求查詢出基本工資在1500-3000之間的僱員信息。
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;
範例8:如今對BETWEEN…AND…操做求反
SELECT * FROM emp WHERE NOT sal BETWEEN 1500 AND 3000 ; SELECT * FROM emp WHERE NOT (sal BETWEEN 1500 AND 3000) ;
「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'; //注意:查詢日期表示法!
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
範例11:查詢出全部不領取獎金的僱員
SELECT * FROM emp WHERE comm IS NULL ;
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
而若是如今使用的是NOT IN呢?則表示不在指定的範圍之中。
SELECT * FROM emp WHERE empno NOT IN(7369,7566,7799) ;
注意:關於NOT NULL的問題!
* 若是如今使用了IN操做符,查詢的範圍之中存在了null,不影響查詢;
SELECT * FROM emp WHERE empno IN(7369,7566,null) ;
* 若是如今使用了NOT IN操做符,查詢的範圍之中存在了null,則不會有任何的查詢結果返回;
SELECT * FROM emp WHERE empno NOT IN(7369,7566,null) ;
重點:對於這個限制如今先做爲特色記住,之後會講解爲何NOT IN之中不能出現null,並且記住了
若是NOT IN中出現了null,則表示的就是查詢所有數據。
5、模糊查詢: LIKE子句
LIKE子句的功能是提供了模糊查找的操做,例如:某些程序上出現的搜索操做,都屬於LIKE子句的實現,可是必須提醒的,搜索引擎上的查詢可不是LIKE。
可是要想使用LIKE子句則必須認識兩個匹配符號:
* 匹配單個字符:_ ; -> 1 個
* 匹配任意多個字符:% ; -> 0個,1個,多個
範例13:要求查詢僱員姓名中以字母A開頭的所有僱員信息。
SELECT * FROM emp WHERE ename LIKE 'A%' ;
範例14:要求查詢出僱員姓名中第二個字母是A的所有信息。
SELECT * FROM emp WHERE ename LIKE '_A%' ;
範例15:要求查詢出僱員姓名中帶有字母A的僱員信息。
SELECT * FROM emp WHERE ename LIKE '%A%' ;
如今使用NOT操做,對操做進行求反的功能:
SELECT * FROM emp WHERE ename NOT LIKE '%A%' ;
可是對於LIKE子句,不必定只能在字符串數據上表示,能夠在任意的數據上表示:
SELECT * FROM emp WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%1$';
說明:關於LIKE子句的使用
在開發之中,數據庫的模糊查詢確定使用LIKE子句,可是在使用LIKE子句的時候有一個最大的注意點:若是在模糊查詢上不設置任意的查詢關鍵字的話(如:%%),則表示查詢所有記錄:
SELECT * FROM emp WHERE ename LIKE '%%' OR hiredate LIKE '%%' OR sal LIKE '%%' ;
這一個特色能夠幫助用戶節約不少代碼,因此必定要記住!