[Mysql]WHERE条件查询

2022-08-12  本文已影响0人  RamboL

数据库中如果包含大量的数据,很少需要检索表中所有的行信息,通常只会根据特定的需要提取对应的数据子集。只检索所需要数据的制定搜索条件。搜索条件也称为过滤条件。

使用Where子句

select * from data_test where id = 1;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 王武   | 男   |
+----+--------+------+
1 row in set (0.01 sec)
#

使用操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
Between 两者之间-between...and...

注意:在同时使用where和order by 子句时,请务必保证order by子句位于where之后,否则将会产生错误

select * from data_test;#先用update语句将sex字段的值进行一下修改,以便后面的演示
+----+--------+-------+
| id | name   | sex   |
+----+--------+-------+
|  1 | 王武   | Women |
|  2 | 张三   | man   |
|  3 | 李四   | Man   |
+----+--------+-------+
3 rows in set (0.00 sec)

检查单个值

select * from data_test where sex = "man";
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  2 | 张三   | man  |
|  3 | 李四   | Man  |
+----+--------+------+
2 rows in set (0.00 sec)
#

注意:如上所示,mysql在执行匹配时,默认不区分大小写

不匹配检查

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)
#

注意:以上两个语句分别使用了!=和<>,返回的结果一致

范围检查

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基础上新增一列score,作为范围查询的依据


-------------------------------------------------------------------------------------

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)
#

空值检查

#为了演示时能够清晰的看到效果,我们把其中一项值设置为空
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与不匹配,在通过过滤选择出不具有特定值的行时,你可能希望返回具有NULL值的行。但是,不行,因为在未知具有特殊的含义,数据库不知道他们是否匹配,所以在匹配过滤或者不匹配过滤时不返回他们。所以在过滤数据时,一定要验证返回的数据中确实给出了被过滤列具有NULL的行。

上一篇下一篇

猜你喜欢

热点阅读