在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    SQL之SELECT語(yǔ)句-過(guò)濾數(shù)據(jù)(二)

    組合WHERE子句

    為了進(jìn)行更強(qiáng)的過(guò)濾控制,MySQL允許給出多個(gè)WHERE子句。這些子句可以兩種方式使用:以AND子句或OR子句的方式使用。

    操作符(operator)用來(lái)聯(lián)結(jié)或改變WHERE子句中的子句的關(guān)鍵字。也稱(chēng)為邏輯操作符(logical operator)。

    AND操作符

    為了通過(guò)不止一個(gè)列進(jìn)行過(guò)濾,可使用AND操作符給WHERE子句附加條件。

    SELECT prod_id, prod_price, prod_nameFROM productsWHERE vend_id=1003 AND prod_price<10;

    此SQL語(yǔ)句檢索由供應(yīng)商為1003且價(jià)格小于10元的所有產(chǎn)品的名稱(chēng)和價(jià)格。AND 用在WHERE子句中的關(guān)鍵字,用來(lái)指示檢索滿足所有給定條件的行。

    OR操作符

    OR操作符與AND操作符不同,它指示MySQL檢索匹配任一條件的行。

    SELECT prod_price, prod_nameFROM productsWHERE vend_id=1002 OR vend_id=1003;

    此SQL語(yǔ)句檢索由任一個(gè)指定供應(yīng)商1002或1003的所有產(chǎn)品的產(chǎn)品名和價(jià)格。OR WHERE子句中使用的關(guān)鍵字,用來(lái)表示檢索匹配任一給定條件的行。

    計(jì)算次序

    WHERE可包含任意數(shù)目的AND和OR操作符。允許兩者結(jié)合進(jìn)行復(fù)雜和高級(jí)的過(guò)濾。

    SELECT prod_price, prod_nameFROM productsWHERE vend_id=1002 OR vend_id=1003 AND prod_price > 10;

    SQL在處理OR操作符前,優(yōu)先處理AND操作符。當(dāng)SQL看到上述WHERE子句時(shí),它理解為由供應(yīng)商1003制造的任何價(jià)格為10元以上的產(chǎn)品,或者由供應(yīng)商1002制造的任何產(chǎn)品,而不管其價(jià)格如何。換句話說(shuō),由于AND在計(jì)算次序中優(yōu)先級(jí)更高,操作符被錯(cuò)誤地組合了。此問(wèn)題的解決方法是使用圓括號(hào)明確地分組相應(yīng)的操作符。

    SELECT prod_price, prod_nameFROM productsWHERE (vend_id=1002 OR vend_id=1003) AND prod_price > 10;

    在WHERE子句中使用圓括號(hào) 任何時(shí)候使用具有AND和OR操作符的WHERE子句,都應(yīng)該使用圓括號(hào)明確地分組操作符。不要過(guò)分依賴(lài)默認(rèn)計(jì)算次序,即使它確實(shí)是你想要的東西也是如 此。使用圓括號(hào)沒(méi)有什么壞處,它能消除歧義。

    IN操作符

    圓括號(hào)在WHERE子句中還有另外一種用法。IN操作符用來(lái)指定條件范圍,范圍中的每個(gè)條件都可以進(jìn)行匹配。IN取合法值的由逗號(hào)分隔的清單,全都括在圓括號(hào)中。

    SELECT prod_price, prod_nameFROM productsWHERE vend_id IN (1002, 1003) AND prod_price > 10;

    此SELECT語(yǔ)句檢索供應(yīng)商1002和1003的所有產(chǎn)品。IN操作符后跟由逗號(hào)分隔的合法值清單,整個(gè)清單必須括在圓括號(hào)中。IN WHERE子句中用來(lái)指定要匹配值的清單的關(guān)鍵字,功能與OR 相當(dāng)。

    為什么要使用IN操作符?

  • 在使用長(zhǎng)的合法選項(xiàng)清單時(shí),IN操作符的語(yǔ)法更清楚且更直觀。
  • 在使用IN時(shí),計(jì)算的次序更容易管理(因?yàn)槭褂玫牟僮鞣伲?/li>
  • IN操作符一般比OR操作符清單執(zhí)行更快。
  • IN的最大優(yōu)點(diǎn)是可以包含其他SELECT語(yǔ)句,使得能夠更動(dòng)態(tài)地建立WHERE子句(后面介紹)。
  • NOT操作符

    WHERE子句中的NOT操作符有且只有一個(gè)功能,那就是否定它之后所跟的任何條件。

    SELECT prod_price, prod_nameFROM productsWHERE vend_id NOT IN (1002, 1003);

    這里的NOT否定跟在它之后的條件,因此,MySQL不是匹配1002和1003的vend_id , 而是匹配1002和1003之外供應(yīng)商的vend_id。在與IN操作符聯(lián)合使用時(shí),NOT使找出與條件列表不匹配的行非常簡(jiǎn)單。

    MySQL中的NOTMySQL支持使用NOT對(duì)IN、BETWEEN和 EXISTS子句取反,這與多數(shù)其他DBMS允許使用NOT對(duì)各種條件取反有很大的差別。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月17日 09:19
    下一篇 2022年6月17日 09:19

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息