美文网首页
[Mysql]WHERE条件查询

[Mysql]WHERE条件查询

作者: RamboL | 来源:发表于2022-08-12 08:52 被阅读0次

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

使用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的行。

相关文章

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • [Mysql]WHERE条件查询

    数据库中如果包含大量的数据,很少需要检索表中所有的行信息,通常只会根据特定的需要提取对应的数据子集。只检索所需要数...

  • mysql的查询、子查询及连接查询

    一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order ...

  • mysql之条件语句

    mysql之条件语句where和having的区别。当我们需要按条件对查询结果进行筛选,就需要条件语句WHERE和...

  • 面试总结

    1.Java编程 2. Mysql添加索引后查询速度没有变化 mysql查询语句的where条件字段和select...

  • 查询性能优化

    MySQL查询优化器的局限性 关联子查询 MySQL的子查询实现的非常糟糕,最糟糕的一类查询是where条件中包含...

  • mysql使用where条件数字类型被强转

    mysql在使用where查询的时候,如果查询约束的字段是varchar类型,但是查询条件是int类型,则会把无法...

  • MySQL优化:单索引的选择-index_merge

    1.多个单索引 where子句后有多个查询条件,MySQL 5.1以前即使分别为每个条件建立索引,查询优化器也只会...

  • MySQL SELECT条件查询

    一、 SELECT 条件查询 条件查询 条件查询就是在查询时给出 WHERE 子句, 在WHERE字句中可以使用如...

  • mysql索引失效场景

    WHERE字句的查询条件里有不等于号(WHERE column!=…),MYSQL将无法使用索引类似地,如果WHE...

网友评论

      本文标题:[Mysql]WHERE条件查询

      本文链接:https://www.haomeiwen.com/subject/wrjxgrtx.html