所謂的限定查詢就是指在全部資料查詢出來之前增加一些過濾條件,只要滿足此過濾條件的資料都可以顯示出來,而過濾條件可以有多個,如果要設定限定則使用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,...