MySQL WHERE子句

时间:2019-11-20 08:52:04  来源:igfitidea点击:

简介:在本教程中,您将学习如何在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子句中形成表达式的比较运算符。

OperatorDescription

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

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子句根据条件过滤行。