MySQL WHERE子句
简介:在本教程中,您将学习如何在SELECT语句中使用MySQL WHERE子句从结果集中过滤行。
MySQL WHERE子句简介
WHERE子句允许您为查询返回的行指定搜索条件。
下面显示了WHERE子句的语法:
SELECT select_list FROM table_name WHERE search_condition;
search_condition是使用逻辑运算符AND,OR和NOT的一个或多个谓词的组合。
在MySQL中,谓词是布尔表达式,其结果为TRUE,FALSE或UNKNOWN。
table_name中导致search_condition评估为TRUE的任何行都将包含在最终结果集中。
除了SELECT语句外,您还可以在UPDATE或DELETE语句中使用WHERE子句指定要更新或删除的行。
在SELECT语句中,在FROM子句之后和SELECT子句之前评估WHERE子句。
MySQL WHERE子句示例
我们将使用示例数据库中的employees表进行演示。
1)使用带有相等运算符示例的MySQL WHERE子句
以下查询使用WHERE子句查找其职务为Sales Rep的所有雇员:
SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle = 'Sales Rep';
在此示例中,SELECT语句检查employee表的所有行,并仅选择jobTitle列中值为Sales Rep的行。
2)将MySQL WHERE子句与AND运算符配合使用
下面的示例使用WHERE子句查找其职务为Sales Rep和办公代码为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子句
此查询查找职务为Sales Rep的雇员或使用办公室代码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
因此,查询将返回具有职务销售代表或办公室代码为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。
要形成模式,请使用%和_通配符。
%通配符匹配零个或多个字符的任何字符串,而_通配符匹配任何单个字符。
此查询查找姓氏以字符串'son'结尾的员工:
SELECT firstName, lastName FROM employees WHERE lastName LIKE '%son' ORDER BY firstName;
6)将MySQL WHERE子句与IN运算符示例一起使用
如果值与列表中的任何值匹配,则IN运算符返回TRUE。
value IN (value1, value2,...)
下面的示例将WHERE子句与IN运算符一起使用,以查找位于办公室的办公室代码为1的员工。
SELECT firstName, lastName, officeCode FROM employees WHERE officeCode IN (1 , 2, 3) ORDER BY officeCode;
7)将MySQL WHERE子句与IS NULL运算符一起使用
若要检查值是否为NULL,请使用IS NULL运算符,而不是等于运算符(=)。
如果值为NULL,则IS NULL运算符将返回TRUE。
value IS NULL
在数据库世界中,NULL是标记,指示缺少或未知的一条信息。
它不等于数字0或空字符串。
该语句将WHERE子句与IS NULL运算符一起使用,以获取reports列中值为NULL的行:
SELECT lastName, firstName, reportsTo FROM employees WHERE reportsTo IS NULL;
8)将MySQL WHERE子句与比较运算符一起使用
下表显示了可用于在WHERE子句中形成表达式的比较运算符。
Operator | Description |
---|
以下查询使用不等于(<>)运算符查找不是销售代表的所有员工:
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;
在本教程中,您学习了如何使用MySQL WHERE子句根据条件过滤行。