MySQL WHERE子句
摘要:在本章节中,您将学习如何在SELECT语句中使用MySQL WHERE子句来过滤结果集中的行。
MySQL WHERE子句简介
使用select语句查询数据时,如果没有使用WHERE子句,结果集中可能包括了无用的数据。一般来说,表的数据会随着业务的扩展,数据越来越多,从表中获取所有行并没有意义,特别是对于大表,如雇员,销售订单,采购订单,生产订单等,因为我们通常想要查询部分数据进行分析,例如本季度的销售或今年销售额比去年同期等等。
WHERE 子句允许您基于特定的表达式或条件指定要查询的精确行。
您还将学习如何使用LIMIT子句来约束SELECT语句返回的行数。
MySQL WHERE子句示例
我们将继续使用示例数据库中的employees表数据,如下图所示。

假设,我们只想从employees表中获取员工的jobtitle为“Sales Rep”,这时可以使用以下查询:
SELECT lastname, firstname, jobtitleFROM employeesWHERE jobtitle = 'Sales Rep';
即使WHERE子句出现在语句的末尾,MySQL也会首先评估WHERE子句中的表达式以查询匹配的行。它查询jobtitle = 'Sales Rep'的所有数据行。
jobtitle = 'Sales Rep';然后,MySQL从SELECT语句中返回指定的字段lastname, firstname和jobtitle。

where子语句后面可以跟一个简单的条件表达式(如上面实例),也可以跟一个复杂的条件表达式,结合多个表达式与逻辑运算符,如AND,OR等。例如,查询jobtitle等于'Sales Rep' 并且 officeCode = 1的所有行数据。 mysql代码如下:
SELECT lastname, firstname, jobtitleFROM employeesWHERE jobtitle = 'Sales Rep' AND officeCode = 1;
下表列出了可用于WHERE子句中形成过滤表达式的比较运算符。
| 操作员 | 描述 |
|---|---|
| = | 等于。几乎可以使用任何数据类型。 |
| <>或!= | 不等于。 |
| < | 小于。通常使用数字和日期/时间数据类型。 |
| > | 大于 |
| <= | 小于或等于 |
| > = | 大于或等于 |
以下mysql语句使用不等于运算符来获取不是销售代表的所有员工:
SELECT lastname, firstname, jobtitleFROM employeesWHERE jobtitle <> 'Sales Rep';
以下mysql语句查询officecode 大于5的所有员工数据:
SELECT lastname, firstname, officeCodeFROM employeesWHERE officecode > 5;
officecode 小于或等于4(<= 4)的员工:
SELECT lastname, firstname, officeCodeFROM employeesWHERE officecode <= 4;
更多关于MySQL WHERE子句
还有一些有用的运算符,您可以在WHERE子句中使用它们以形成更复杂的条件查询,例如:
- BETWEEN 选择指定范围内的值。
- LIKE 基于模式匹配匹配值。
- IN 指定值是否与列表中的任何值匹配。
- IS NULL检查值是否为NULL。
WHERE子句不仅用于SELECT语句,还可以用于其他SQL语句来过滤行,例如DELETE和UPDATE。
在本教程中,我们向您介绍了如何使用MySQL WHERE子句根据条件过滤行。
编辑:一起学习网
标签:子句,语句,表达式,数据,条件