Mysql基础教程(02):WHERE

MySQL 使用 WHERE 子句过滤数据

本文介绍了在 MySQL 数据库中如何使用 WHERE 语句过滤数据。

默认情况下,SELECT 查询数据表中的所有行数。但我们只想查询满足一定条件的数据,就要用到 WHERE 子句。

MySQL WHERE 子句介绍

WHERE 子句允许您为 SELECT 查询指定搜索条件。以下是 WHERE 子句的语法:

SELECT
    columns_list
FROM
    table_name
WHERE
    query_condition;

其中 query_condition 就是查询条件,它的结果是一个布尔值,其值可能为 TRUE FALSEUNKNOWN。最终, SELECT 语句返回的结果集就是满足查询条件结果为 TRUE 的记录。

查询条件一般用来比较某个字段是否匹配某个值,一般形式如下:

column_name = value

查询条件也可以是使用 AND , OR 和 NOT 逻辑运算符一个或多个表达式的组合。
除了用在 SELECT 语句之外, WHERE 子句还可以用在 UPDATE 和 DELETE 语句中,用来指定要更新或删除的行。

WHERE子句实例

在以下实例中,我们使用 Sakila 示例数据库中的演员表actor作为演示。

以下是 actor 表的定义:

+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
| Field       | Type              | Null | Key | Default           | Extra                                         |
+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
| actor_id    | smallint unsigned | NO   | PRI | NULL              | auto_increment                                |
| first_name  | varchar(45)       | NO   |     | NULL              |                                               |
| last_name   | varchar(45)       | NO   | MUL | NULL              |                                               |
| last_update | timestamp         | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+

使用相等比较运算

以下查询使用 WHERE 子句查找姓为 的所有演员:

SELECT
    *
FROM
    actor
WHERE
    last_name = '刘'

在这个语句中查询条件 last_name = '刘' 的含义是表中记录行的 last_name 字段的值为

+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        2 | 德华       || 2024-05-23 10:38:39 |
|        5 | 青云       || 2024-05-23 10:54:57 |
|       18 | 亦菲       || 2024-05-23 11:13:27 |
+----------+------------+-----------+---------------------+
3 rows in set (0.03 sec)

使用 AND 组合多个条件查询

以下查询使用 WHERE 子句查找姓为 名为星驰的所有演员:

SELECT
    *
FROM
    actor
WHERE
    last_name = '周' AND first_name = '星驰';

在这个语句中,查询条件 last_name = '周' AND first_name = '星驰' 的意思是过滤表中 last_name 字段的值为 ,并且 first_name 字段的值为 星驰的所有记录行。

last_name = '周' 是一个条件,first_name = '星驰' 也是一个条件,AND 将两者组合在一起,意思是查询的记录行要同时满足这两个条件。

AND 两边的条件表达式,必须两个表达式都返回了 TRUE,整个表达式的结果才是 TRUE

+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        1 | 星驰       || 2024-05-23 10:38:29 |
+----------+------------+-----------+---------------------+

使用 OR 组合多个查询条件

以下查询使用 WHERE 子句查找姓为 的所有演员:

SELECT
    *
FROM
    actor
WHERE
    last_name = '周' OR last_name = '刘';
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        2 | 德华       || 2024-05-23 10:38:39 |
|        5 | 青云       || 2024-05-23 10:54:57 |
|       18 | 亦菲       || 2024-05-23 11:13:27 |
|        1 | 星驰       || 2024-05-23 10:38:29 |
|       16 | 润发       || 2024-05-23 10:58:35 |
+----------+------------+-----------+---------------------+

在这个语句中,查询条件 last_name = '周' OR last_name = '刘' 代表了表中记录行的last_name字段的记录值等于 或者

OR 两边的条件表达式,只要一个表达式返回了 TRUE,整个表达式的结果就是 TRUE

比较运算符

在上面的几个例子中,我们只使用了一种比较运算符 = 。 比较运算符 = 的作用是比较运算符两边的操作数(字段或表达式或值)是否相等。

MySQL 提供了很多比较运算符以满足各种不同比较需求。下表列出了可用于 WHERE 子句中的比较运算符。

在这里插入图片描述
注意: 在 SQL 中,比较两个值是否相等的运算符是 =,而不是 ==。这与一些常见的编程语言并不相同。

结论

  • SELECT 语句中使用 WHERE 子句进行条件查询。
  • WHERE 子句可以使用多种比较运算符。
  • WHERE 子句可以使用 AND, OR, NOT 组合多种条件。
  • WHERE 子句还可以用在UPDATE 和 DELETE语句中。

←Mysql基础教程(01):Selct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁拾舞

你的鼓励将是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值