Skip to main content

MySQL在哪里

MySQL WHERE子句简介

WHERE子句允许您为查询返回的行指定搜索条件。下面显示WHERE子句的语法:

SELECT 
select_list
FROM
table_name
WHERE
search_condition;

搜索条件是一个或多个使用逻辑运算符AND、or和NOT的表达式的组合。

在MySQL中,谓词是一个布尔表达式,其计算结果为TRUE、FALSE或UNKNOWN。

SELECT语句将包括结果集中满足搜索条件的任何行。

除了SELECT语句外,还可以在UPDATE或DELETE语句中使用WHERE子句来指定要更新或删除的行。

当使用WHERE子句执行SELECT语句时,MySQL会在FROM子句之后、SELECT和ORDER BY子句之前计算WHERE子句:

MySQL WHERE子句示例

我们将使用示例数据库中的employees表进行演示。

1) 使用MySQL WHERE子句和等式运算符示例

以下查询使用WHERE子句查找职务为销售代表的所有员工:

SELECT 
lastname,
firstname,
jobtitle
FROM
employees
WHERE
jobtitle = 'Sales Rep';

在本例中,SELECT语句检查employees表的所有行,并仅选择jobTitle列中值为Sales Rep的行。

2) 在AND运算符中使用MySQL WHERE子句

以下示例使用WHERE子句查找职务为销售代表且办公室代码为1的员工:

SELECT 
lastname,
firstname,
jobtitle,
officeCode
FROM
employees
WHERE
jobtitle = 'Sales Rep' AND
officeCode = 1;

在本例中,WHERE子句中的表达式使用AND运算符组合两个条件:

jobtitle = 'Sales Rep' AND officeCode = 1;

只有当两个表达式的计算结果都为TRUE时,AND运算符的计算结果才为TRUE。因此,查询返回的行在jobTitle列中的值为Sales Rep,officeCode为1。

3) 使用带有OR运算符的MySQL WHERE子句

此查询查找职务为销售代表的员工或找到办公室代码为1的办公室的员工:

SELECT 
lastName,
firstName,
jobTitle,
officeCode
FROM
employees
WHERE
jobtitle = 'Sales Rep' OR
officeCode = 1
ORDER BY
officeCode ,
jobTitle;

只有当其中一个表达式的计算结果为TRUE时,OR运算符的计算结果才为TRUE:

jobtitle = 'Sales Rep' OR officeCode = 1

因此,查询将返回任何职务为Sales Rep或office code 1的员工。

4) 使用MySQL WHERE子句和BETWEEN操作符示例

如果某个值在以下值的范围内,则BETWEEN运算符返回TRUE:

expression BETWEEN low AND high

以下查询查找位于办公室代码为1到3的办公室的员工:

SELECT 
firstName,
lastName,
officeCode
FROM
employees
WHERE
officeCode BETWEEN 1 AND 3
ORDER BY officeCode;

5) 使用MySQL WHERE子句和LIKE运算符示例

如果某个值与指定的模式匹配,则LIKE运算符的计算结果为TRUE。

要形成模式,可以使用%和u通配符。%通配符匹配零个或多个字符的任何字符串,而u通配符匹配任何单个字符。

以下查询查找姓氏以字符串“son”结尾的员工:

SELECT 
firstName,
lastName
FROM
employees
WHERE
lastName LIKE '%son'
ORDER BY firstName;

6) 在IN运算符示例中使用MySQL WHERE子句

如果值与列表中的任何值匹配,IN运算符将返回TRUE。

value IN (value1, value2,...)

下面的示例使用带有IN运算符的WHERE子句来查找位于办公室代码为1的办公室的员工。

SELECT 
firstName,
lastName,
officeCode
FROM
employees
WHERE
officeCode IN (1 , 2, 3)
ORDER BY
officeCode;

7) 使用带有IS NULL运算符的MySQL WHERE子句

要检查值是否为NULL,请使用is NULL运算符,而不是equal运算符(=)。如果值为NULL,IS NULL运算符将返回TRUE。

value IS NULL

在数据库世界中,NULL是一个标记,表示缺少或未知值。NULL不等于数字0或空字符串。

以下语句使用WHERE子句和IS NULL运算符来获取reportsTo列中的值为NULL的行:

SELECT 
lastName,
firstName,
reportsTo
FROM
employees
WHERE
reportsTo IS NULL;

8) 使用带有比较运算符的MySQL WHERE子句

下表显示了可用于在WHERE子句中形成表达式的比较运算符。

以下查询使用不等于(\<>)运算符查找所有非销售代表的员工:

SELECT 
lastname,
firstname,
jobtitle
FROM
employees
WHERE
jobtitle <> 'Sales Rep';

以下查询查找办公室代码大于5的员工:

SELECT 
lastname,
firstname,
officeCode
FROM
employees
WHERE
officecode > 5;

以下查询返回办公室代码小于或等于4(<=4)的员工:

SELECT 
lastname,
firstname,
officeCode
FROM
employees
WHERE
officecode <= 4;

总结