SQL查詢語句在數據庫的操作當中經常頻繁用到,為了進行更強的過濾控制,有時簡單的過濾根本無法實現(xiàn)數據的篩選,這時我們需要用到高級過濾AND和OR、IN和NOT操作符。今天做網站小編就和大家討論一下關于sql高級過濾語句的用法...
公司主營業(yè)務:網站設計、做網站、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出萬安免費做網站回饋大家。
語句:SELECT * FROM dbo.Products WHERE prod_name='king doll' AND prod_price>8;
--檢索dbo.Products表中所有列,過濾條件為由供應商king doll制造價格大于8的所有商品;
注意:--后面的字符是這條語句的注釋,這條語句有兩個條件,分別用AND關鍵字聯(lián)接在一起,并且過濾結果必須滿足這兩個條件,如果只滿足其中一個該數據不會被檢索出來;
例如:已知供應商king doll制造商品對應的價格是8元,現(xiàn)在把商品價格改成小于8或者供應商改成king add,結論是任何數據都不會被檢索出來,因為使用AND操作符只滿足一個條件是不合理的。
OR操作符(或)
語句:SELECT * FROM dbo.Products WHERE prod_name='king doll' OR prod_price>8;
--檢索dbo.Products表中所有列,過濾條件為由供應商king doll制造價格大于8的所有商品值;
注意:--這里要說明的是OR操作符與AND操作符的不同之處是只要滿足其中一個條件,數值就會被檢索出來,例如:由供應商king doll制造價格小于8商品或者由供應商king add制造價格大于8的商品只要其中一個條件符合,數據就被檢索出來;
求值順序(AND和OR混合使用)
先看個例子:檢索出價格為8元以上,且由king doll或者Queen dool制造的所有產品,我們輸入語句:
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)在就解釋為什么:其實是操作符被錯誤組合導致的,因為在數據庫系統(tǒng)中AND求值的順序比OR的求值順序更優(yōu)先。
第一張圖的順序是:先執(zhí)行prod_name='Queen dool' AND prod_price>10的數據再執(zhí)行prod_name='king doll' OR prod_name='Queen dool'的數據,由于第一個條件和第2條件符合所以出現(xiàn)兩行數值。
第二張圖的順序也是:先執(zhí)行prod_name='Queen dool' AND prod_price>10的數據再執(zhí)行prod_name='king doll' OR prod_name='Queen dool'的數據,但由于第一條件不符,Queen dool對應的數值沒有大于10的值,所以只出現(xiàn)第2個條件的數據。
第三張圖的順序是:先執(zhí)行括號里面的,然后在執(zhí)行AND prod_price>10,在SQL數據庫中加括號的內容系統(tǒng)會優(yōu)先執(zhí)行,由于結果只滿足括號里的條件,但并不滿足括號外的條件,因為prod_price的值是9.49小于10,所以什么數據都沒顯示。
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供應商包含的所有值;
當前名稱:SQL高級過濾查詢用法
網頁URL:http://jinyejixie.com/article36/edhipg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站策劃、建站公司、用戶體驗、微信公眾號、標簽優(yōu)化、網頁設計公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)