Oracle之限定查詢

2021-06-29 07:44:59 字數 4796 閱讀 7554

所謂的限定查詢就是指在全部資料查詢出來之前增加一些過濾條件,只要滿足此過濾條件的資料都可以顯示出來,而過濾條件可以有多個,如果要設定限定則使用where子句完成,此時的sql語法結構如下:

select [distinct] * | 列 [別名] [,列 [別名],....]

from 表名稱 [別名]

[where 條件(s)] ;

可以發現where子句中的條件可以有多個,而這多個條件的連線有兩種符號完成:

· and:與操作(條件1 and 條件2 and …),所有的條件都滿足才可以;

· or:或操作(條件1 or 條件2 or …),只要有乙個條件滿足即可;

除了以上的兩個連線條件之外,在sql語句之中,限定操作的符號也有許多,下面分類來說明。

1、 關係運算子

關係運算子有如下幾個:>、>=、<、<=、!=(<>)、=;

範例:查詢基本工資高於2000的全部雇員資訊

select * 

from emp

where sal>2000 ;

範例:要求查詢出smith的資訊

select * from emp where ename='smith' ;
可是,現在不會有任何的結果返回,因為在oracle之中,所有的資料都是區分大小寫的。

select * from emp where ename='smith' ;
範例:查詢出所有不是辦事員的詳細資訊

select * from emp where job<>'clerk' ;
select * from emp where job!='clerk' ;
同時需要注意的是,既然查詢的條件不是辦事員,那麼也可以對查詢的條件使用not進行求反。

select * from emp where

not job='clerk' ;

範例:要求查詢出所有銷售人員的基本資訊,並且要求銷售人員的工資高於1300

現在應該有兩個條件:職位的判斷、工資的判斷,這兩個條件應該同時被滿足,使用and

select * from emp where job='salesman'

and sal>1300 ;

範例:查詢出工資範圍在1500~3000之間的全部雇員資訊(包含1500和3000),依然是兩個條件,要同時滿足,and

select * from emp where sal>=1500

and sal<=3000 ;

範例:查詢出所有經理或者是銷售人員的資訊,並且要求這些人的基本工資高於1500

· 條件一:職位是經理或者是銷售,那麼就意味著使用or操作;

· 條件二:工資高於1500,則使用and連線;

select * 

from emp

where (job='manager'

or job='salesman') and sal>1500 ;

可是一定需要注意的是,在設定判斷內容時,所有的字串要使用單引號宣告,而數字不需要任何修飾。

2、 範圍運算子:bewteen…and

「between 最小值 and 最大值」,表示在乙個指定的範圍之中進行內容的過濾,其中過濾時會包含最小值和最大值,例如,現在查詢工資範圍在1500~3000之間的雇員資訊,在之前使用and操作符完成,而現在就通過between…and符號完成。

select * from emp where sal between 1500

and3000 ;

範例:要求查詢出所有在2023年僱傭的雇員資訊,1981-01-01(』01-1月 -81』) ~ 1981-12-31(』31-12月 -1981』);

select * from emp 

where hiredate between '01-1月 -81'

and'31-12月 -1981' ;

一定要記住的是,在sql語句裡面,幾乎所有的操作符號都不受資料型別的限制。

select * from emp 

where ename between 'a'

and'z' ;

3、 null判斷:is null、is not null

null從資料庫概念上講表示的是一種不確定的資料內容,是因為暫時不知道裡面的內容是多少,如果在數字操作上設定了null,可不是0。

範例:查詢所有領取佣金的雇員資訊 —— comm不為空

select * from emp where comm is

notnull ;

select * from emp where

not comm is

null ;

範例:查詢所有不領取佣金的雇員

select * from emp where comm is

null ;

範例:查詢所有領取佣金高於100的雇員資訊

select * from emp where comm>100 ;
4、 in操作符:in、not in

所謂的in操作指的是乙個指定範圍的查詢,例如,現在有這樣乙個要求。

範例:查詢出雇員編號是7369、7566、9999的雇員資訊

select * from emp where empno=7369

or empno=7566

or empno=9999 ;

而同樣的操作,現在是相當於指定了範圍,就使用in操作完成。

select * from emp where empno in (7369,7566,9999) ;
現在也同樣可以使用not in設定為不再指定的範圍之中。

select * from emp where empno not

in (7369,7566,9999) ;

注意:在使用not in時要注意null的問題

例如,現在使用in操作符:

select * from emp where empno in (7369,7566,null) ;
在in操作之中,範圍裡面設定null並沒有任何的問題,但是反過來,換成not in操作。

select * from emp where empno not

in (7369,7566,null) ;

在使用not in操作之中,範圍裡面不允許有null,否則不會有任何的查詢結果返回。

5、 模糊查詢:like

此判斷符號在一般的專案之中出現較多,例如,像一些**上會存在關鍵字查詢,實際上這種查詢都是依靠了like子句完成,而搜尋引擎上所使用的關鍵字查詢不是這種操作。

like子句如果要使用,則首先需要兩個匹配符號:

· 「%」:表示匹配任意多個(0個、1個、多個);

· 「_」:表示只匹配任意乙個;

範例:要求查詢出所有雇員姓名是以a開頭的全部雇員資訊

select * from emp where ename like

'a%' ;

範例:要求查詢出雇員姓名第二個字母是m的全部雇員資訊

select * from emp where ename like

'_m%' ;

範例:要求查詢出雇員姓名任意位置上包含字母a的全部雇員資訊

select * from emp where ename like

'%a%' ;

如果要求反,直接使用not即可。

select * from emp where ename not

like

'%a%' ;

注意點:關於like子句使用

· 注意點一:使用like子句的時候不受任何的資料型別限制;

select * from emp where ename like

'%1%'

or sal like

'%1%'

or hiredate like

'%1%' ;

· 注意點二:如果在設定模糊查詢時,沒有設定任何的查詢關鍵字,則表示查詢全部;
select * from emp where ename like

'%%' ;

oracle限定查詢

限定查詢指的是在資料查詢時設定一系列的過濾條件,滿足條件後才能顯示。比如說select from emp where sal 1500 限定查詢常見的限定運算子 關係運算子 最後這個也表示不等於 判斷是否為null is null,is not null 邏輯運算子 and,or,not 範圍查詢 ...

Oracle 限定查詢1

3.1 認識限定查詢 例如 如果一張表中有100w條資料,一旦執行了 select from 表 語句之後,則將在螢幕上顯示表中的全部資料行的記錄,這樣即不方便瀏覽,也有可能造成宕機的問題出現,所以此時就必須對查詢的結果進行篩選,那麼就可以通過where指定查詢的篩選條件。在進行oracle資料庫安...

SQL限定查詢筆記記錄

限定查詢 在簡單查詢之中,是將所有的記錄進行顯示。當需要對查詢結果進行過濾篩選時,這就用到限定查詢了。限定查詢就是在簡單查詢的基礎上,加上where語句,用於指定限定條件。在where子句之後可以增加多個條件,最常見的條件就是基本的關係運算子 between,and like,in is null,...