久久亚洲国产中文精品一区二区_福利视频 日韩 欧美_野花社区在线观看免费视频_亚洲av无码中午_牛牛视频国内精品无码_欧美熟女啪啪视频_欧美亚洲每日最新av_国产精品九九九久久黑色jk_一本大香蕉道视频_一同看彩虹小蓝2023

旗下網(wǎng)站

百科知識庫

報道公司事件 · 傳播行業(yè)動態(tài)

SQL高級過濾查詢用法

發(fā)布日期:2018-01-08    發(fā)布者:金菊

SQL查詢語句在數(shù)據(jù)庫的操作當中經(jīng)常頻繁用到,為了進行更強的過濾控制,有時簡單的過濾根本無法實現(xiàn)數(shù)據(jù)的篩選,這時我們需要用到高級過濾AND和OR、IN和NOT操作符。今天做網(wǎng)站小編就和大家討論一下關于sql高級過濾語句的用法...

語句:SELECT * FROM dbo.Products WHERE prod_name='king doll' AND prod_price>8;

--檢索dbo.Products表中所有列,過濾條件為由供應商king doll制造價格大于8的所有商品;

注意:--后面的字符是這條語句的注釋,這條語句有兩個條件,分別用AND關鍵字聯(lián)接在一起,并且過濾結果必須滿足這兩個條件,如果只滿足其中一個該數(shù)據(jù)不會被檢索出來;

例如:已知供應商king doll制造商品對應的價格是8元,現(xiàn)在把商品價格改成小于8或者供應商改成king add,結論是任何數(shù)據(jù)都不會被檢索出來,因為使用AND操作符只滿足一個條件是不合理的。

OR操作符(或)

語句:SELECT * FROM dbo.Products WHERE prod_name='king doll' OR prod_price>8;

--檢索dbo.Products表中所有列,過濾條件為由供應商king doll制造價格大于8的所有商品值;

注意:--這里要說明的是OR操作符與AND操作符的不同之處是只要滿足其中一個條件,數(shù)值就會被檢索出來,例如:由供應商king doll制造價格小于8商品或者由供應商king add制造價格大于8的商品只要其中一個條件符合,數(shù)據(jù)就被檢索出來;

求值順序(AND和OR混合使用)

先看個例子:檢索出價格為8元以上,且由king doll或者Queen dool制造的所有產(chǎn)品,我們輸入語句:

SELECT * FROM dbo.Products WHERE prod_name='king doll' OR prod_name='Queen dool' AND prod_price>8;

得出結果如下圖:

現(xiàn)在把prod_price大于8的值改成大于10,看看結果如何:

現(xiàn)在檢索出來的值是1行,接下來在prod_name='king doll' OR prod_name='Queen dool'語句加上括號,看看結果如何:

這回什么都沒了

現(xiàn)在就解釋為什么:其實是操作符被錯誤組合導致的,因為在數(shù)據(jù)庫系統(tǒng)中AND求值的順序比OR的求值順序更優(yōu)先。

第一張圖的順序是:先執(zhí)行prod_name='Queen dool' AND prod_price>10的數(shù)據(jù)再執(zhí)行prod_name='king doll' OR prod_name='Queen dool'的數(shù)據(jù),由于第一個條件和第2條件符合所以出現(xiàn)兩行數(shù)值。

第二張圖的順序也是:先執(zhí)行prod_name='Queen dool' AND prod_price>10的數(shù)據(jù)再執(zhí)行prod_name='king doll' OR prod_name='Queen dool'的數(shù)據(jù),但由于第一條件不符,Queen dool對應的數(shù)值沒有大于10的值,所以只出現(xiàn)第2個條件的數(shù)據(jù)。

第三張圖的順序是:先執(zhí)行括號里面的,然后在執(zhí)行AND prod_price>10,在SQL數(shù)據(jù)庫中加括號的內(nèi)容系統(tǒng)會優(yōu)先執(zhí)行,由于結果只滿足括號里的條件,但并不滿足括號外的條件,因為prod_price的值是9.49小于10,所以什么數(shù)據(jù)都沒顯示。

IN操作符(指定條件范圍)

語句:SELECT * FROM dbo.Products WHERE prod_name IN ('king doll' ,'Queen dool')

--檢索dbo.Products表中所有列,過濾條件為由供應商king doll和Queen dool制造的商品;

注意:它的功能其實和OR一樣,但是它的執(zhí)行速度會更快并且簡潔,最大的優(yōu)點是可以包含其他SELECT語句,能夠更動態(tài)地建立WHERE字句。

NOT操作符(否定其后跟的任何條件)

語句:SELECT * FROM dbo.Products WHERE NOT prod_name='king doll';

--檢索dbo.Products表中所有列,過濾條件為否定king doll供應商包含的所有值;

Copyright 大連網(wǎng)龍科技 版權所有 遼ICP備14006349號  html - txt - xml

遼公網(wǎng)安備 21021702000140號

電話
客服