數(shù)據(jù)庫(kù)中如果包含大量的數(shù)據(jù),很少需要檢索表中所有的行信息,通常只會(huì)根據(jù)特定的需要提取對(duì)應(yīng)的數(shù)據(jù)子集。只檢索所需要數(shù)據(jù)的制定搜索條件。搜索條件也稱為過(guò)濾條件。
使用Where子句
select * from data_test where id = 1;
#
+----+--------+------+
| id | name | sex |
+----+--------+------+
| 1 | 王武 | 男 |
+----+--------+------+
1 row in set (0.01 sec)
#
使用操作符
| 操作符 | 說(shuō)明 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| != | 不等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| Between | 兩者之間-between...and... |
注意:在同時(shí)使用where和order by 子句時(shí),請(qǐng)務(wù)必保證order by子句位于where之后,否則將會(huì)產(chǎn)生錯(cuò)誤
select * from data_test;#先用update語(yǔ)句將sex字段的值進(jìn)行一下修改,以便后面的演示
+----+--------+-------+
| id | name | sex |
+----+--------+-------+
| 1 | 王武 | Women |
| 2 | 張三 | man |
| 3 | 李四 | Man |
+----+--------+-------+
3 rows in set (0.00 sec)
檢查單個(gè)值
select * from data_test where sex = "man";
#
+----+--------+------+
| id | name | sex |
+----+--------+------+
| 2 | 張三 | man |
| 3 | 李四 | Man |
+----+--------+------+
2 rows in set (0.00 sec)
#
注意:如上所示,mysql在執(zhí)行匹配時(shí),默認(rèn)不區(qū)分大小寫(xiě)
不匹配檢查
select * from data_test where sex <> "man";
#
+----+--------+-------+
| id | name | sex |
+----+--------+-------+
| 1 | 王武 | Women |
+----+--------+-------+
1 row in set (0.00 sec)
#
select * from data_test where sex != "man";
#
+----+--------+-------+
| id | name | sex |
+----+--------+-------+
| 1 | 王武 | Women |
+----+--------+-------+
1 row in set (0.00 sec)
#
注意:以上兩個(gè)語(yǔ)句分別使用了!=和<>,返回的結(jié)果一致
范圍檢查
select * from data_test;
#
+----+--------+-------+-------+
| id | name | sex | score |
+----+--------+-------+-------+
| 1 | 王武 | Women | 11 |
| 2 | 張三 | man | 21 |
| 3 | 李四 | Man | 31 |
| 4 | 馬六 | man | 33 |
| 5 | 李七 | women | 53 |
| 6 | 周八 | women | 43 |
+----+--------+-------+-------+
6 rows in set (0.00 sec)
#
#為了使操作更加清晰,在data_test基礎(chǔ)上新增一列score,作為范圍查詢的依據(jù)
-------------------------------------------------------------------------------------
select * from data_test where score between 10 and 50;
#
+----+--------+-------+-------+
| id | name | sex | score |
+----+--------+-------+-------+
| 1 | 王武 | Women | 11 |
| 2 | 張三 | man | 21 |
| 3 | 李四 | Man | 31 |
| 4 | 馬六 | man | 33 |
| 6 | 周八 | women | 43 |
+----+--------+-------+-------+
5 rows in set (0.00 sec)
#
空值檢查
#為了演示時(shí)能夠清晰的看到效果,我們把其中一項(xiàng)值設(shè)置為空
select * from data_test;
#
+----+--------+-------+-------+
| id | name | sex | score |
+----+--------+-------+-------+
| 1 | 王武 | Women | 11 |
| 2 | 張三 | man | 21 |
| 3 | 李四 | NULL | 31 |
| 4 | 馬六 | man | 33 |
| 5 | 李七 | women | 53 |
| 6 | 周八 | women | 43 |
+----+--------+-------+-------+
6 rows in set (0.00 sec)
#
select * from data_test where sex IS NULL;
#
+----+--------+------+-------+
| id | name | sex | score |
+----+--------+------+-------+
| 3 | 李四 | NULL | 31 |
+----+--------+------+-------+
1 row in set (0.00 sec)
#
注意:NULL與不匹配,在通過(guò)過(guò)濾選擇出不具有特定值的行時(shí),你可能希望返回具有NULL值的行。但是,不行,因?yàn)樵谖粗哂刑厥獾暮x,數(shù)據(jù)庫(kù)不知道他們是否匹配,所以在匹配過(guò)濾或者不匹配過(guò)濾時(shí)不返回他們。所以在過(guò)濾數(shù)據(jù)時(shí),一定要驗(yàn)證返回的數(shù)據(jù)中確實(shí)給出了被過(guò)濾列具有NULL的行。