更新時(shí)間:2021-03-08 17:25:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1356次
限定查詢顧名思義就是在查詢時(shí)對(duì)查詢條件有一定的限定,限定查詢廣泛存在于各大數(shù)據(jù)庫中,比如我們要講的Oracle數(shù)據(jù)庫中的Oracle限定查詢就是在一般查詢語法的基礎(chǔ)上增加了一個(gè)WHERE子句,用于指定限定條件,此時(shí)語法如下:
SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名]]
FROM 表名稱 [別名]
[WHERE 條件(S)];
在WHERE子句之后可以增加多個(gè)條件,最常見的條件就是基本的關(guān)系運(yùn)算:>、>=、<、<=、!=(<>)、BETWEEN、AND、LIKE、IN、IS NULL、AND、OR、NOT;
1、關(guān)系運(yùn)算
范例:要求查詢出基本工資高于1500的所有雇員信息
SELECT * FROM emp WHERE sal>1500;
范例:查詢出所有職位是辦事員的雇員信息
SELECT * FROM emp WHERE job='clerk';
這個(gè)時(shí)候沒有返回相應(yīng)的查詢結(jié)果,主要原因是在Oracle數(shù)據(jù)庫中,所有的數(shù)據(jù)都是區(qū)分大小寫的,所以代碼修改如下:
SELECT * FROM emp WHERE job='CLERK';
以上只是操作了一個(gè)條件,現(xiàn)在也可以操作多個(gè)條件,而這多個(gè)條件之間可以使用AND或OR進(jìn)行連接操作。
范例:查詢工資在1500~3000之間的全部雇員信息
SELECT * FROM empWHERE sal>=1500 AND sal<=3000;
范例:查詢出職位是辦事員,或者是銷售人員的全部信息
SELECT * FROM empWHERE job='CLERK' OR job='SALESMAN';
范例:查詢出職位是辦事員,或者是銷售人員的全部信息,并且要求這些雇員的工資大于1200
SELECT * FROM empWHERE (job='CLERK' OR job='SALESMAN') AND sal>1200;
范例:查詢所有不是辦事員的雇員信息
SELECT * FROM emp WHERE job<>'CLERK';
SELECT * FROM emp WHERE job!='CLERK';
SELECT * FROM emp WHERE NOT job='CLERK';
2、范圍判斷:BETWEEN…AND…
“BETWEEN 最小值 AND 最大值”,表示的是一個(gè)范圍的判斷過程。
范例:要求查詢出基本工資在1500~3000的雇員信息
SELECT * FROM empWHERE sal BETWEEN 1500 AND 3000;
范例:現(xiàn)在也可以對(duì)BETWEEN…AND…操作求反
SELECT * FROM empWHERE NOT sal BETWEEN 1500 AND 3000;
“BETWEEN…AND…”操作符不光只是針對(duì)于數(shù)字有用,對(duì)于日期也同樣有用。
范例:要求查詢出在1981年雇傭的全部雇員信息
時(shí)間范圍:1981-01-01~1981-12-31,使用hiredate字段表示雇傭日期;
hiredate字段上的內(nèi)容可以使用字符串表示:’01-1月-1981’~’31-12月-81’
SELECT * FROM empWHERE hiredate BETWEEN '01-1月-1981' AND '31-12月-81';
3、判斷是否為空:IS (NOT) NULL
使用此語法可以判斷某一個(gè)字段上的內(nèi)容是否是“null”,但是null和數(shù)字0以及空字符串是兩個(gè)概念。
范例:查詢出所有領(lǐng)取獎(jiǎng)金的雇員信息
SELECT * FROM empWHERE comm IS NOT NULL;
SELECT * FROM empWHERE NOT comm IS NULL;
范例:查詢出所有不領(lǐng)取獎(jiǎng)金的雇員
SELECT * FROM empWHERE comm IS NULL;
4、指定范圍的判斷:IN操作符
IN操作符表示的是指定一個(gè)查詢的范圍,例如,現(xiàn)在有如下一個(gè)查詢要求:
范例:查詢出雇員編號(hào)是7369、7566、7799的雇員信息
如果按照最早的做法,使用OR操作完成;
SELECT * FROM empWHERE empno=7369 OR empno=7566 OR empno=7799;
如果現(xiàn)在使用了新的操作符IN的話,則代碼簡(jiǎn)單了;
SELECT * FROM empWHERE empno IN (7369,7566,7799);
而如果現(xiàn)在使用的是NOT IN呢?則表示不在指定的范圍之中。
SELECT * FROM empWHERE empno NOT IN (7369,7566,7799);
注意點(diǎn):關(guān)于NOT IN的問題
如果現(xiàn)在使用了IN操作符,查詢的范圍之中存在了null,不影響查詢;
SELECT * FROM emp WHERE empno IN(7369,7566,null);
如果現(xiàn)在使用的是NOT IN操作符,如果查詢范圍之中有了null則表示的就是查詢?nèi)繑?shù)據(jù)。
SELECT * FROM emp WHERE empno NOT IN(7369,7566,null);
對(duì)于這個(gè)限制,現(xiàn)在先作為特點(diǎn)記住,以后會(huì)講解為什么NOT IN之中不能出現(xiàn)null。
5、模糊查詢:LIKE子句
LIKE子句的功能是提供了模糊查找的操作,例如:某些程序上出現(xiàn)的搜索操作,都屬于LIKE子句的實(shí)現(xiàn),但是必須提醒的,搜索引擎上的查詢可不是LIKE。
但是要想使用LIKE子句則必須認(rèn)識(shí)兩個(gè)匹配符號(hào):
匹配單個(gè)字符:_; -> 1個(gè)
匹配任意多個(gè)字符:%; -> 0個(gè)、1個(gè)、多個(gè)
范例:要求查詢雇員姓名中以字母A開頭的全部雇員信息
SELECT * FROM emp WHERE ename LIKE 'A%';
范例:要求查詢出雇員姓名中第二個(gè)字母是A的全部雇員信息
SELECT * FROM emp WHERE ename LIKE '_A%';
范例:要求查詢出雇員姓名中帶有字母A的雇員
SELECT * FROM emp WHERE ename LIKE '%A%';
現(xiàn)在也可以使用NOT操作,對(duì)操作進(jìn)行求反的功能:
SELECT * FROM emp WHERE ename NOT LIKE '%A%';
但是對(duì)于LIKE子句,不一定只能在字符串?dāng)?shù)據(jù)上表示,可以在任意的數(shù)據(jù)上表示:
SELECT * FROM emp WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%1%';
說明:關(guān)于LIKE子句的使用
在開發(fā)之中,數(shù)據(jù)庫的模糊查詢肯定使用LIKE子句,但是在使用LIKE子句的時(shí)候有一個(gè)最大的注意點(diǎn):如果在模糊查詢上不設(shè)置任何的查詢關(guān)鍵字的話('%%')則表示查詢?nèi)坑涗洠?/p>
SELECT * FROM emp WHERE ename LIKE '%%' OR hiredate LIKE '%%' OR sal LIKE '%%';
Oracle限定查詢是我們必須要掌握的,能夠在使用Oracle數(shù)據(jù)庫中的過程中快速得到我們想要查詢的數(shù)據(jù),在本站的Oracle教程中,對(duì)于限定查詢的詳細(xì)規(guī)則和語法都有詳細(xì)的講解,步步為營,幫助我們打好基礎(chǔ),學(xué)好Oracle!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)