国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

這篇具有很好參考價(jià)值的文章主要介紹了【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?? 博客主頁(yè):博主鏈接
?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN??
?? 學(xué)習(xí)專(zhuān)欄推薦:LeetCode刷題集!
?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正!
?? 未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳?

【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

??MySQL的前情介紹

??大家好呀,今天是我第N次寫(xiě)MySQL,也是最近才學(xué)習(xí)MySQL,也想著記錄一下自己的學(xué)習(xí)過(guò)程,并且分享給大家尼!

??本章詳情

??本文章將講授如何組合WHERE子句以建立功能更強(qiáng)的更高級(jí)的搜索條件。以及學(xué)習(xí)如何使用NOT和IN操作符。

??組合WHERE子句

前言

??在上一篇文章中介紹的所有WHERE子句在過(guò)濾數(shù)據(jù)時(shí)使用的都是單一的條件。為了進(jìn)行更強(qiáng)的過(guò)濾控制,MySOL允許給出多個(gè)WHERE子句。這些子句可以?xún)煞N方式使用:以AND子句的方式或OR子句的方式使用。

??AND操作符

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

舉例說(shuō)明

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

輸入

SELECT prod_id,prod_price, prod_name FROM products
	WHERE vend_id = 1003 AND prod_price = 10;

分析

??此SQL語(yǔ)句檢索由供應(yīng)商1003制造且價(jià)格小于等于10美元的所有產(chǎn)品的名稱(chēng)和價(jià)格。這條SELECT語(yǔ)句中的WHERE子句包含兩個(gè)條件,并且用AND關(guān)鍵字聯(lián)結(jié)它們。AND指示DBMS只返回滿(mǎn)足所有給定條件的行。如果某個(gè)產(chǎn)品由供應(yīng)商1003制造,但它的價(jià)格高于10美元,則不檢索它。類(lèi)似,如果產(chǎn)品價(jià)格小于10美元,但不是由指定供應(yīng)商制造的也不被檢索。這條SQL語(yǔ)產(chǎn)生的輸出如下:

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

??AND 用在WHERE子句中的關(guān)鍵字,用來(lái)指示檢索滿(mǎn)足所有給定條件的行。

??在上述例子中,使用了只包含一個(gè)關(guān)鍵字AND的語(yǔ)句,把兩個(gè)過(guò)濾條件組合在一起。還可以添加多個(gè)過(guò)濾條件,每添加一條就要使用一個(gè)AND。

??OR操作符

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

??下面我將講述一個(gè)實(shí)際的例子,來(lái)進(jìn)行講解:

輸入

SELECT prod_name,prod_price FROM products
	WHERE vend_id = 1002 OR vend_id = 1003;

分析

?此SQL語(yǔ)句檢索由任一個(gè)指定供應(yīng)商制造的所有產(chǎn)品的產(chǎn)品名和價(jià)格。OR操作符告訴DBMS匹配任一條件而不是同時(shí)匹配兩個(gè)條件。如果這里使用的是AND操作符,則沒(méi)有數(shù)據(jù)返回(此時(shí)創(chuàng)建的WHERE子句不會(huì)檢索到匹配的產(chǎn)品)。這條SQL語(yǔ)產(chǎn)生的輸出如下:

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾
結(jié)論

??OR WHERE子句中使用的關(guān)鍵字,用來(lái)表示檢索匹配任一給定條件的行。

??計(jì)算次序

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

??但是,組合AND和OR帶來(lái)了一個(gè)有趣的問(wèn)題。為了說(shuō)明這個(gè)問(wèn)題,來(lái)看一個(gè)例子。假如需要列出價(jià)格為10美元(含)以上且由1002或1003制造的所有產(chǎn)品。下面的SELECT語(yǔ)使用AND和OR操作符的組合建立了一個(gè)WHERE子句:

輸入

SELECT prod_name,prod_price FROM products
	WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

分析

??根據(jù)上面的結(jié)果。返回的行中有兩行價(jià)格小于10美元,顯然返回的行未按預(yù)期的進(jìn)行過(guò)濾。為什么會(huì)這樣呢?原因在于計(jì)算的次序。SQL(像多數(shù)語(yǔ)言一樣)在處理OR操作符前,優(yōu)先處理AND操作符。當(dāng)SQL看到上述WHERE子句時(shí),它理解為由供應(yīng)商1003制造的任何價(jià)格為10美元(含)以上的產(chǎn)品,或者由供應(yīng)商1002制造的任何產(chǎn)品,而不管其價(jià)格如何。換句話(huà)說(shuō),由于AND在計(jì)算次序中優(yōu)先級(jí)更高操作符被錯(cuò)誤地組合了。

解決上述問(wèn)題的辦法

此問(wèn)題的解決方法是使用圓括號(hào)明確地分組相應(yīng)的操作符。請(qǐng)看下面的SELECT語(yǔ)句及輸出:

輸入

SELECT prod_name,prod_price FROM products
	WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price = 10;

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

分析

??這條SELECT語(yǔ)句與前一條的唯一差別是,這條語(yǔ)句中,前兩個(gè)條件用圓括號(hào)括了起來(lái)。因?yàn)?strong>圓括號(hào)具有較AND或OR操作符高的計(jì)算次序,DBMS首先過(guò)濾圓括號(hào)內(nèi)的OR條件。這時(shí),SQL語(yǔ)句變成了選擇由供應(yīng)商1002或1003制造的且價(jià)格都在10美元(含)以上的任何產(chǎn)品,這正是我們所希望的。

??在WHERE子句中使用圓括號(hào)

總結(jié)

??在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)中。下面的例子說(shuō)明了這個(gè)操作符:

輸入

SELECT prod_name,prod_price FROM products
	WHERE vend_id IN (1002,1003)
		ORDER BY prod_name

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾
分析

此SELECT語(yǔ)句檢索供應(yīng)商1002和1003制造的所有產(chǎn)品。IN操作符后跟由逗號(hào)分隔的合法值清單,整個(gè)清單必須括在圓括號(hào)中。

??如果你認(rèn)為IN操作符完成與OR相同的功能,那么你的這種猜測(cè)是對(duì)的。下面的SQL語(yǔ)句完成與上面的例子相同的工作:

輸入

SELECT prod_name, prod_price FROM products
	WHERE vend_id = 1002 OR vend_id = 1003
		ORDER BY prod_name;

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

既然這樣也能解決此類(lèi)問(wèn)題,那么我們?yōu)槭裁匆褂肐N操作符?其有點(diǎn)具體如下。

  1. 在使用長(zhǎng)的合法選項(xiàng)清單時(shí),IN操作符的語(yǔ)法更清楚且更直觀。
  2. 在使用IN時(shí),計(jì)算的次序更容易管理(因?yàn)槭褂玫牟僮鞣?
  3. IN操作符一般比OR操作符清單執(zhí)行更快
  4. IN的最大優(yōu)點(diǎn)是可以包含其他SELECT語(yǔ)句,使得能夠更動(dòng)態(tài)地建立WHERE子句。(之后我們會(huì)進(jìn)行深入的講解)

總結(jié)

??IN WHERE子句中用來(lái)指定要匹配值的清單的關(guān)鍵字,功能與OR相當(dāng)。

??NOT操作符

前言

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

??例子精講

NOT

NOT WHERE子句中用來(lái)否定后跟條件的關(guān)鍵字

下面的例子說(shuō)明NOT的使用。為了列出除1002和1003之外的所有供應(yīng)商制造的產(chǎn)品,可編寫(xiě)如下的代碼:

輸入

SELECT prod_name,prod_price FROM products
	WHERE vend_id NOT IN (1002,1003)
		ORDER BY prod_name;

輸出
【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

分析

??這里的NOT否定跟在它之后的條件,因此,MySQL不是匹配1002和1003的vend id,而是匹配1002和1003之外供應(yīng)商的vend_id。

??為什么使用NOT?

?對(duì)于簡(jiǎn)單的WHERE子句,使用NOT確實(shí)沒(méi)有什么優(yōu)勢(shì)。但在更復(fù)雜的子句中,NOT是非常有用的。例如,在與IN操作符聯(lián)合使用時(shí),NOT使找出與條件列表不匹配的行非常簡(jiǎn)單。

MySQL中的NOT

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

??如何鞏固學(xué)習(xí)

提示:在學(xué)習(xí)的過(guò)程中,我們需要先自行進(jìn)行思考,而不是一遇到不會(huì)的就放棄思考直接看答案,如果最后遇到真的不會(huì)的題目,我們可以適當(dāng)?shù)倪M(jìn)行觀看答案,看自己的思路是否正確,在作出正確的判斷

??本文小結(jié)

本文章介紹了如何用SELECT語(yǔ)句的WHERE子句過(guò)濾返回的數(shù)據(jù)。我們學(xué)習(xí)了如何對(duì)相等、不相等、大于、小于、值的范圍以及NULL值等進(jìn)行測(cè)試。

好啦今日的分享到這里就結(jié)束啦,我是愛(ài)你們的M malloc希望可以幫助到你們噢,最后別忘記三連啦!!

【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾

【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-492485.html

到了這里,關(guān)于【MySQL】一文帶你了解數(shù)據(jù)過(guò)濾的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【MySQL】一文帶你了解數(shù)據(jù)庫(kù)索引與事務(wù)

    數(shù)據(jù)庫(kù)索引是一種提高數(shù)據(jù)庫(kù)查詢(xún)效率的數(shù)據(jù)結(jié)構(gòu)。它可以快速地定位和訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),從而大大提高數(shù)據(jù)庫(kù)查詢(xún)的速度和效率。數(shù)據(jù)庫(kù)索引可以根據(jù)不同的查詢(xún)需求構(gòu)造多個(gè)索引,以最大化提高查詢(xún)效率。 數(shù)據(jù)庫(kù)索引基于各種字段來(lái)創(chuàng)建,在查詢(xún)時(shí)可以通過(guò)索引直接

    2024年02月09日
    瀏覽(82)
  • 一文帶你了解MySQL之InnoDB 數(shù)據(jù)頁(yè)結(jié)構(gòu)

    一文帶你了解MySQL之InnoDB 數(shù)據(jù)頁(yè)結(jié)構(gòu)

    前言 學(xué)完了記錄結(jié)構(gòu),我們?cè)搶W(xué)數(shù)據(jù)頁(yè)的結(jié)構(gòu),前邊我們簡(jiǎn)單的提了一下頁(yè)的概念,它是Innodb管理存儲(chǔ)空間的基本單位,頁(yè)的大小默認(rèn)16KB,InnoDB為了不同的目的而設(shè)計(jì)了許多種不同類(lèi)型的頁(yè),比如存放表空間頭部信息的頁(yè),存放Insert Buffer信息的頁(yè),存放INODE信息的頁(yè),存放

    2024年02月06日
    瀏覽(14)
  • 一文帶你了解MySQL之InnoDB統(tǒng)計(jì)數(shù)據(jù)是如何收集的

    一文帶你了解MySQL之InnoDB統(tǒng)計(jì)數(shù)據(jù)是如何收集的

    前言 我們前邊嘮叨查詢(xún)成本的時(shí)候經(jīng)常用到一些統(tǒng)計(jì)數(shù)據(jù),比如通過(guò) show table status 可以看到關(guān)于表的統(tǒng)計(jì)數(shù)據(jù),通過(guò) show index 可以看到關(guān)于索引的統(tǒng)計(jì)數(shù)據(jù),那么這些統(tǒng)計(jì)數(shù)據(jù)是怎么來(lái)的呢?它們是以什么方式收集的呢?本章將聚焦于 InnoDB存儲(chǔ)引擎 的統(tǒng)計(jì)數(shù)據(jù)收集策略,看

    2024年02月06日
    瀏覽(28)
  • 一文帶你了解MySQL數(shù)據(jù)庫(kù)InnoDB_Buffer_Pool

    一文帶你了解MySQL數(shù)據(jù)庫(kù)InnoDB_Buffer_Pool

    前言 通過(guò)前邊的學(xué)習(xí)我們知道,對(duì)于使用 InnoDB 作為存儲(chǔ)引擎的表來(lái)說(shuō),不管是用于存儲(chǔ)用戶(hù)數(shù)據(jù)的索引(包括聚簇索引和二級(jí)索引),還是各種系統(tǒng)數(shù)據(jù),都是以頁(yè)的形式存放在表空間中的,而所謂的表空間只不過(guò)是 InnoDB 對(duì)文件系統(tǒng)上一個(gè)或幾個(gè)實(shí)際文件的抽象,也就是

    2024年02月01日
    瀏覽(93)
  • 一文帶你了解三大開(kāi)源關(guān)系型數(shù)據(jù)庫(kù):SQLite、MySQL和PostgreSQL

    一文帶你了解三大開(kāi)源關(guān)系型數(shù)據(jù)庫(kù):SQLite、MySQL和PostgreSQL

    目錄 1、概述 2、SQLite數(shù)據(jù)庫(kù) 2.1、SQLite簡(jiǎn)介 2.2、SQLite優(yōu)缺點(diǎn) 2.3、SQLite應(yīng)用場(chǎng)景 3、MySQL數(shù)據(jù)庫(kù) 3.1、MySQL簡(jiǎn)介 3.2、MySQL優(yōu)缺點(diǎn) 3.3、MySQL應(yīng)用場(chǎng)景 4、PostgreSQL數(shù)據(jù)庫(kù) 4.1、PostgreSQL簡(jiǎn)介 4.2、PostgreSQL優(yōu)勢(shì) 4.3、PostgreSQL應(yīng)用場(chǎng)景 5、在實(shí)際系統(tǒng)中的選擇 VC++常用功能開(kāi)發(fā)匯總(專(zhuān)欄文章列

    2024年02月08日
    瀏覽(126)
  • 一文帶你了解MySQL之鎖

    一文帶你了解MySQL之鎖

    上一篇文章主要學(xué)習(xí)了事務(wù)并發(fā)執(zhí)行時(shí)可能帶來(lái)的各種問(wèn)題,并發(fā)事務(wù)訪(fǎng)問(wèn)相同記錄的情況我們大致可以劃分為3種: 讀-讀 情況:即并發(fā)事務(wù)相繼讀取相同的記錄,我們需要知道的是讀取操作本身不會(huì)對(duì)記錄有一毛錢(qián)影響,并不會(huì)引起什么問(wèn)題,所以允許這種情況的發(fā)生。

    2024年02月08日
    瀏覽(28)
  • 【MySQL】一文帶你了解如何使用MySQL

    【MySQL】一文帶你了解如何使用MySQL

    ?? 博客主頁(yè):博主鏈接 ?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN?? ?? 學(xué)習(xí)專(zhuān)欄推薦:LeetCode刷題集! ?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正! ?? 未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳? ------------------??分割線(xiàn)??------------------------- —————————

    2024年02月09日
    瀏覽(30)
  • 一文帶你了解MySQL之約束

    一文帶你了解MySQL之約束

    在SQL標(biāo)準(zhǔn)中,一共規(guī)定了6種不同的約束, 包括非空約束,唯一約束和檢查約束等,而在MySQL中是不支持檢查約束的,所以這篇文章先對(duì)其余5種約束做一個(gè)詳解和練習(xí)。 約束是作用于表中列上的規(guī)則,用于限制加入表的數(shù)據(jù)。 例如,作為主鍵的列一定是非空的唯一的,否則將

    2024年02月07日
    瀏覽(28)
  • 【MySQL】一文帶你了解SQL

    【MySQL】一文帶你了解SQL

    ?? 博客主頁(yè):博主鏈接 ?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN?? ?? 學(xué)習(xí)專(zhuān)欄推薦:LeetCode刷題集! ?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正! ?? 未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳? ------------------??分割線(xiàn)??------------------------- —————————

    2024年02月08日
    瀏覽(40)
  • 一文帶你了解MySQL之連接原理

    一文帶你了解MySQL之連接原理

    前言 我們搞數(shù)據(jù)庫(kù)一個(gè)都避不開(kāi)的概念就是 連接 ( join )。相信很多小伙伴初學(xué)連接的時(shí)候有些一臉懵,理解了連接的語(yǔ)義之后又可能搞不明白各個(gè)表中的記錄到底是怎么連起來(lái)的,以至于在后期使用數(shù)據(jù)庫(kù)的時(shí)候常常陷入下邊兩種誤區(qū): 誤區(qū)一 :業(yè)務(wù)至上,不管三七二

    2024年02月05日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包