WHERE 條件
前面介紹了如何對(duì)表數(shù)查詢、更新、刪除,本小節(jié)介紹如何在查詢、更新、刪除操作加上 WHERE 條件約束,使這些語(yǔ)句的操作更加準(zhǔn)確,滿足業(yè)務(wù)需求。WHERE 條件的操作符類型有如下:
| 符號(hào) | 說(shuō)明 | 舉例 |
|---|---|---|
| < | 小于,< 左邊的值如果小于右邊的值,則結(jié)果為 TRUE,否則為 FALSE |
如 : 滿足年齡小于 18 的條件 age < 18 |
| = | 等于,= 左邊的值如果等于右邊的值,則結(jié)果為 TRUE,否則為 FALSE |
如 : 姓名為 小明 的條件 name = '小明' |
| > | 大于,> 左邊的值如果大于右邊的值,則結(jié)果為 TRUE,否則為 FALSE |
如 : 時(shí)間戳大于 2020-03-30 00:00:00的條件 time > 1585497600 |
| <> | 不等于,<>還可寫成 != ,左邊的值如果不等于右邊的值,則結(jié)果為 TRUE,否則為 FALSE |
如 : 年份不等于2012的條件 year != 或 year <> 2012 |
| <= | 小于等于,<= 左邊的值如果大于右邊的值,則結(jié)果為 FALSE,否則為 TRUE |
如 : 滿足年齡小于等于 18 的條件 age <= 18 |
| >= | 大于等于,>= 左邊的值如果小于右邊的值,則結(jié)果為 FALSE,否則為 TRUE |
如 : 滿足年齡大于等于 18 的條件 age >= 18 |
| LIKE | 模糊條件,LIKE 右邊的值如果包含左邊的值,則結(jié)果返回TRUE,否則為 FALSE |
如 : 滿足身份證號(hào)為 420 開頭的條件 id_number LIKE '420%',其中 % 表示任意值 |
| NOT LIKE | 不滿足模糊條件,LIKE 右邊的值如果不包含左邊的值,則結(jié)果返回TRUE,否則為 FALSE |
如 : 滿足身份證號(hào)不是 X 結(jié)尾的條件 id_number NOT LIKE '%X',其中 % 表示任意值 |
| BETWEEN AND | 在兩個(gè)值之間(包含兩端值) | 如 : 年齡滿足 大于等于20 和 小于等于30 的條件 age BETWEEN 20 AND 30 |
| NOT BETWEEN AND | 不在在兩個(gè)值之間(不包含兩端值) | 如 : 年齡滿足 小于20 和 大于30 的條件 age NOT BETWEEN 20 AND 30 |
| IS NULL | 空,IS NULL 左邊的值如果為空,則返回TRUE,否則為FALSE |
如 : 年齡滿足 郵箱為空 的條件 email IS NULL |
| IS NOT NULL | 不是空,IS NOT NULL 左邊的值如果不為空,則返回TRUE,否則為FALSE |
如 : 年齡滿足 郵箱不為空 的條件 email IS NOT NULL |
1.單條件查詢
以 teacher 表為例,查詢年齡大于 18 的教師信息:
SELECT * FROM teacher WHERE age > 18;
執(zhí)行結(jié)果如下圖:

再比如使用 LIKE 模糊查詢身份證號(hào)以 020X 結(jié)尾的教師信息:
SELECT * FROM teacher WHERE id_number LIKE '%020X';
執(zhí)行結(jié)果如下圖:

2.AND 多條件查詢
以 teacher 表為例,查詢年齡大于 18 和 教師姓氏 王 的教師信息:
SELECT * FROM teacher WHERE age > 18 AND name LIKE '王%';
執(zhí)行結(jié)果如下圖:

Tips:這里還想加更多的條件可以在后面繼續(xù)跟
AND,LIKE后面表達(dá)式中%表示指代任意內(nèi)容。
3.OR 多條件查詢
以 teacher 表為例,查詢年齡大于 25 或 教師姓氏 王 的教師信息:
SELECT * FROM teacher WHERE age > 25 OR name LIKE '王%';
執(zhí)行結(jié)果如下圖:

Tips:這里還想加更多的條件可以在后面繼續(xù)跟
OR,若AND和OR混合使用則需要把同一組表達(dá)式用()包起來(lái),如 :(age > 25 AND name LIKE '王%') OR (age < 20 AND name LIKE '劉%')。
4.BETWEEN AND 更新數(shù)據(jù)
以 teacher 表為例,將 age 在 20 和 30 之間的教師身份證設(shè)置為無(wú):
UPDATE teacher SET id_number = '無(wú)' WHERE age BETWEEN 20 AND 30;

Tips:注意
BETWEEN AND包含兩端的值。
5.IS NULL 查詢
為了演示方便,我們先給 teacher 表增加一個(gè)字段 email:
ALTER TABLE `item_name`.`teacher`
ADD COLUMN `email` varchar(50) NULL AFTER `id_number`;
執(zhí)行結(jié)果如下圖:

清空表數(shù)據(jù):
TRUNCATE TABLE teacher;
然后往 teacher 表插入幾條測(cè)試數(shù)據(jù):
INSERT INTO teacher
(name,age,id_number,email)
VALUES
('姓名甲',19,'42011720200604077X',NULL),
('姓名乙',18,'42011720200604099X','123@qq.com'),
('姓名丙',20,'42011720200604020X',NULL),
('姓名丁',21,'42011720200604022X','345@qq.com'),
('姓名戊',22,'42011720200604033X',NULL)
然后查詢 email 為 NULL 的教師信息結(jié)果集:
SELECT * FROM teacher WHERE email IS NULL;
執(zhí)行結(jié)果如下圖:

6.小結(jié)
本小節(jié)介紹了如果在查詢、更新語(yǔ)句后面加上 WHERE 條件約束,需要注意的是當(dāng)使用 >、<、這樣的操作符和空值比較的時(shí)候,NULL值與任何其它值的比較(即使是NULL)永遠(yuǎn)不會(huì)為 TRUE,例如要查詢 name 為 NULL 的結(jié)果集要寫成 name IS NULL,而不能使用 name=NULL。
愛因詩(shī)賢 ·
2025 imooc.com All Rights Reserved |