SQL Where
1. 定義
維基百科:SQL
Where指令用于篩選出滿足條件的結(jié)果集。
慕課解釋?zhuān)簲?shù)據(jù)表中的數(shù)據(jù)往往比較繁雜,在查詢(xún)的時(shí)候需要按照一定的條件進(jìn)行篩選,Where 可以有效地剔除無(wú)用數(shù)據(jù),保留被需要的數(shù)據(jù)。
2. 前言
本小節(jié),我們將一起學(xué)習(xí) SQL Where。
Where 可以搭配很多 SQL 指令使用,因此它的知識(shí)點(diǎn)是比較多的,本節(jié)我們主要介紹 Where 與 Select 是如何搭配使用的。
本節(jié)的主要知識(shí)點(diǎn)有:1.運(yùn)算符;2.單條件查詢(xún);3.連接符;4.多條件查詢(xún)。
本小節(jié)測(cè)試數(shù)據(jù)如下,請(qǐng)先在數(shù)據(jù)庫(kù)中執(zhí)行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
username varchar(20),
age int
);
INSERT INTO imooc_user(username,age)
VALUES('pedro', 23), ('mike', 18), ('jerry', 26), ('Mary', 32);
3. 運(yùn)算符
使用Where時(shí),后面需搭配條件子句,條件字句由條件字段、運(yùn)算符和條件值三部分組成,它們的關(guān)系如下:
[col] [condition] [val]
其中col表示數(shù)據(jù)表中的字段,condition是運(yùn)算符,val是條件值。
例如:age > 18 就是一個(gè)基本的條件子句,age是條件字段,> 是運(yùn)算符,而 18 就是條件值,該條件語(yǔ)句表示選取
年齡大于 18 的用戶。
上面的例子中使用到了運(yùn)算符 >,> 是一種常見(jiàn)的單值比較運(yùn)算符,類(lèi)似的還有:
| 運(yùn)算符 | 描述 | 運(yùn)算符 | 描述 |
|---|---|---|---|
| = | 等于 | <> | 不等于 |
| > | 大于 | != | 不等于 |
| < | 小于 | !< | 不小于 |
| >= | 大于等于 | !> | 不大于 |
| <= | 小于等于 |
運(yùn)算符的多樣性導(dǎo)致了條件子句的多樣性。
不同的條件字段搭配不同的運(yùn)算符,讓 Where 的條件過(guò)濾變得更為強(qiáng)大。
4. 單條件查詢(xún)
Where 后面僅有一個(gè)條件子句的查詢(xún)稱(chēng)為單條件查詢(xún)。
使用語(yǔ)法如下:
SELECT [col1],[col2] from [table_name] WHERE [col3] [condition] [val];
其中col是字段名稱(chēng),table_name是數(shù)據(jù)表名稱(chēng),condition是運(yùn)算符,val是值,數(shù)字1、2表示多個(gè)字段。
4.1 例1 單條件查詢(xún)用戶 1
請(qǐng)書(shū)寫(xiě) SQL 語(yǔ)句,查詢(xún)imooc_user表中年齡超過(guò)25的用戶,并返回用戶名。
分析:
由題干可知,age 是條件字段,25 是條件值,需篩選出年齡超過(guò)25的用戶,所以運(yùn)算符選擇 >。
語(yǔ)句:
整理可得語(yǔ)句如下:
SELECT username from imooc_user WHERE age > 25;
結(jié)果如下:
+----------+
| username |
+----------+
| jerry |
| Mary |
+----------+
4.2 例2 單條件查詢(xún)用戶 2
請(qǐng)書(shū)寫(xiě) SQL 語(yǔ)句,查詢(xún)imooc_user表中年齡等于18的用戶名。
分析:
與上述分析大致相同,但是篩選條件變成了等于,因此運(yùn)算符選擇 =。
語(yǔ)句:
SELECT username from imooc_user WHERE age = 18;
結(jié)果如下:
+----------+
| username |
+----------+
| mike |
+----------+
5. 連接符
Where 后面的條件子句不僅可以為單條件子句,還可以是多條件子句。
多條件子句需要通過(guò)AND或者OR兩個(gè)連接符進(jìn)行連接。
這兩個(gè)的運(yùn)算符的作用如下:
| 運(yùn)算符 | 描述 |
|---|---|
| AND | 連接兩個(gè)條件表達(dá)式,若二者都為T(mén)rue,返回True,否則返回False |
| OR | 連接兩個(gè)條件表達(dá)式,若二者都為False,返回False,否則返回True |
AND 和 OR 兩個(gè)連接符讓多條件查詢(xún)變得更加靈活,從而讓 Where 也變得更加靈活。
6. 多條件查詢(xún)
Where 后面有多個(gè)條件子句的查詢(xún)稱(chēng)為多條件查詢(xún)。
6.1 例3 多條件查詢(xún)用戶 1
請(qǐng)書(shū)寫(xiě) SQL 語(yǔ)句,查詢(xún)imooc_user表中年齡大于等于18但小于25的用戶名。
分析:
條件字段仍是 age,但篩選條件從一個(gè)變成了兩個(gè),第一個(gè)條件,age 要大于等于 18,第二個(gè)條件,age 要小于 25。
兩個(gè)條件之間使用 AND 連接。
語(yǔ)句:
整理語(yǔ)句如下:
SELECT username from imooc_user
WHERE age >= 18
AND age < 25;
結(jié)果如下:
+----------+
| username |
+----------+
| pedro |
| mike |
+----------+
6.2 例4 多條件查詢(xún)用戶2
請(qǐng)書(shū)寫(xiě) SQL 語(yǔ)句,查詢(xún)imooc_user表中年齡小于20或者年齡大于25的用戶名。
分析:
條件字段仍是 age,但篩選條件從一個(gè)變成了兩個(gè),且二者的關(guān)系發(fā)生了變化,第一個(gè)條件,age 要小于 20,第二個(gè)條件,age 要大于 25。
兩個(gè)條件之間使用 OR 連接。
語(yǔ)句:
整理語(yǔ)句如下:
SELECT username from imooc_user
WHERE age < 20
OR age > 25;
結(jié)果如下:
+----------+
| username |
+----------+
| mike |
| jerry |
| Mary |
+----------+
6.3 例5 多條件查詢(xún)用戶 3
多條件的查詢(xún)還可以更加靈活,上述的例子都只涉及到單條件字段的查詢(xún),有時(shí)候需要從多個(gè)字段進(jìn)行結(jié)果篩選。
請(qǐng)書(shū)寫(xiě) SQL 語(yǔ)句,查詢(xún)imooc_user表中年齡在25到30之間(包含25和30),并且用戶名為jerry的用戶。
分析:
條件字段變成了兩個(gè)——username 和 age,username 只有一個(gè)條件,等于jerry,即 =jerry,age 有兩個(gè)條件,既要大于等于25,
還要小于等于30,即 >=25,<=30。
三個(gè)條件之間均用 AND連接。
語(yǔ)句:
整理語(yǔ)句如下:
SELECT username from imooc_user
WHERE username = 'jerry'
AND age >= 25
AND age <= 30;
結(jié)果如下:
+----------+
| username |
+----------+
| jerry |
+----------+
注意: SQL中字符串用單引號(hào)包括,即
''。
7. 小結(jié)
- Where 是使用最為頻繁的指令之一,它的用法極其重要,絕大多數(shù)情況下,查詢(xún)數(shù)據(jù)都需要添加過(guò)濾條件,請(qǐng)務(wù)必熟練掌握它。
- AND 和 OR 的搭配非常靈活,可以說(shuō)是兩兩搭配無(wú)窮盡也。
pedrogao ·
2025 imooc.com All Rights Reserved |