本資料為產(chǎn)品崗位作為日常工作參考,語言口語化
At 2019/4/26 By David.Yang
如何使用限定條件來進(jìn)行數(shù)據(jù)過濾六荒?
在前問當(dāng)中阅懦,我們已經(jīng)學(xué)會(huì)到了SELECT查詢,
在過程當(dāng)中多次接觸了WHERE這個(gè)關(guān)鍵詞贫母,打過預(yù)防針應(yīng)該知道他就是用來做數(shù)據(jù)查詢的過濾使用的。
如果沒有他盒刚,我們將獲取所有有限行內(nèi)的數(shù)據(jù)腺劣,
這會(huì)給我們的查詢結(jié)果帶來麻煩,因?yàn)榉祷氐慕Y(jié)果集當(dāng)中包含了我們不需要的很多數(shù)據(jù)因块。
比如考試成績表橘原,你想告訴楊過他媽穆念慈,你兒子楊過最近學(xué)習(xí)不太好啊涡上,
你看看這考試成績趾断,掛的紅燈籠都能把學(xué)校點(diǎn)沒了,
這時(shí)候吩愧,你給他媽看6年前楊過上幼兒園的考試成績芋酌,還有說服力么?
沒有雁佳,限定的時(shí)間比如半年內(nèi)脐帝,就是一個(gè)時(shí)間維度的查詢條件同云,
學(xué)生 = 楊過,就是一個(gè)指定的學(xué)生查詢條件腮恩。
如果沒有條件限制梢杭,別說楊過半年的成績單温兼,就連楊過你都找不到秸滴。
他媽不得說你啊。
所以募判,WHERE是干嘛的荡含?
WHERE是用來根據(jù)指定的條件,返回滿足指定條件記錄行的子句届垫。
語法:
SELECT DISTINCT
? ? column[,column...]
FROM
? ? table_name
WHERE
where_conditions;
WHERE就是我們的查詢條件
WHERE子句演示
我們構(gòu)造一張學(xué)生考試表释液,當(dāng)中包含了關(guān)鍵字段,
學(xué)生id装处、分?jǐn)?shù)误债、考試時(shí)間等
然后補(bǔ)進(jìn)一些測試數(shù)據(jù)。
(請(qǐng)記得我們前文曾接觸過的批量插入數(shù)據(jù)語句)
我們獲得測試數(shù)據(jù)如下
mysql>select* from tests;
黃老邪的彈指神通天下一絕妄迁,這么牛逼的老師寝蹈,教的課怎么樣呢?
課程彈指神通的課程id是1登淘,他偷偷去考試表查了查學(xué)生的成績箫老,
黃老邪一句SQL猛操作
SQL
SELECT *
FROM
?????? tests
WHERE
?????? deleted = 0
LIMIT 10;
黃老邪定睛一看
這就的到了所有學(xué)生的考試信息了。
邏輯運(yùn)算符
黃老邪其實(shí)不關(guān)心學(xué)生們的蛤蟆功黔州、一陽指學(xué)的怎么樣耍鬓,
他只關(guān)心自己教的彈指神通(cuouse no = 1)
這時(shí)候我們可以對(duì)WHERE條件進(jìn)行稍稍復(fù)雜化一點(diǎn),
我們可以將多個(gè)表達(dá)式或邏輯運(yùn)算符(AND OR)組合在一起形成一個(gè)復(fù)雜化的查詢條件流妻。
黃老邪是這么干的牲蜀,他只想看自己的課程下學(xué)生的考試成績,
SQL
SELECT *
FROM
tests
WHERE
deleted = 0
AND
courseno = 1
LIMIT 100;
比較運(yùn)算符
在WHERE子句當(dāng)中绅这,出了=涣达,我們還可以使用其他的比較運(yùn)算符,
例如以下:
比如
黃老師想看看哪些小王八蛋彈指神通沒好好學(xué)君躺,不及格的
黃老邪這么做
SQL
SELECT *
FROM
?????? tests
WHERE
?????? deleted = 0
AND
?????? courseno = 1
AND
?????? score <=60
LIMIT 100;
這些比較運(yùn)算符可以用在SELECT UPDATE DELETE的WHERE子句當(dāng)中峭判,
都是作為過濾條件的運(yùn)算操作使用。
更多過濾條件
我們了解了在WHERE子句中可以使用AND進(jìn)行條件的邏輯組裝棕叫,
在面對(duì)更多更復(fù)雜的過濾條件是林螃,我們還有類似其他
BETWEEN 在一個(gè)范圍內(nèi)進(jìn)行條件過濾
LIKE 基于匹配模式的條件過濾
IN 在一個(gè)list中進(jìn)行命中過濾
IS NULL 是否為NULL
等
本篇完成后,你可以通過WHERE子句進(jìn)行條件過濾俺泣,當(dāng)然是SELECT疗认,
不管UPDATE完残,還是DELETE都可以適用WHERE子句過濾,后面篇章將講解横漏。