MYSQL WHERE|猿教程|

在本教程中,您将学习如何在 SELECT 语句中使用 MySQL WHERE 子句从结果集中过滤行。

MySQL WHERE 子句介绍

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

SELECT select_list
FROMtable_name
WHEREsearch_condition;

search_condition 是使用逻辑运算符 ANDOR 和 NOT 的一个或多个表达式的组合。

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

SELECT 语句将包括结果集中满足 search_condition 的任何行。

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

当执行带有 WHERE 子句的 SELECT 语句时,MySQL 在 FROM 子句之后和 SELECT 和 ORDER BY 子句之前评估 WHERE 子句:

MySQL WHERE 子句示例

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

使用带有相等运算符示例的 MySQL WHERE 子句

以下查询使用 WHERE 子句查找职位为'Sales Rep'的所有员工:

SELECT lastname, firstname, jobtitle
FROMemployees
WHEREjobtitle = 'Sales Rep';
+-----------+-----------+-----------+
| lastname  | firstname | jobtitle  |
+-----------+-----------+-----------+
| Jennings  | Leslie    | Sales Rep |
| Thompson  | Leslie    | Sales Rep |
| Firrelli  | Julie     | Sales Rep |
| Patterson | Steve     | Sales Rep |
| Tseng     | Foon Yue  | Sales Rep |
| Vanauf    | George    | Sales Rep |
| Bondur    | Loui      | Sales Rep |
| Hernandez | Gerard    | Sales Rep |
| Castillo  | Pamela    | Sales Rep |
| Bott      | Larry     | Sales Rep |
| Jones     | Barry     | Sales Rep |
| Fixter    | Andy      | Sales Rep |
| Marsh     | Peter     | Sales Rep |
| King      | Tom       | Sales Rep |
| Nishi     | Mami      | Sales Rep |
| Kato      | Yoshimi   | Sales Rep |
| Gerard    | Martin    | Sales Rep |
+-----------+-----------+-----------+
17 rows in set (0.00 sec)

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

使用带有 AND 运算符的 MySQL WHERE 子句

以下示例使用 WHERE 子句查找职务为Sales Rep且office codes为 1 的员工:


SELECT lastname, firstname, jobtitle,officeCode
FROMemployees
WHEREjobtitle = 'Sales Rep' AND officeCode = 1;
+----------+-----------+-----------+------------+
| lastname | firstname | jobtitle  | officeCode |
+----------+-----------+-----------+------------+
| Jennings | Leslie    | Sales Rep | 1          |
| Thompson | Leslie    | Sales Rep | 1          |
+----------+-----------+-----------+------------+
2 rows in set (0.00 sec)

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

jobtitle = 'Sales Rep' AND officeCode = 1;

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

将 MySQL WHERE 子句与 OR 运算符一起使用

此查询查找职位为Sales Rep的员工或office code为 1 的员工:

SELECT lastName, firstName, jobTitle, officeCode
FROMemployees
WHEREjobtitle = 'Sales Rep' OR officeCode = 1
ORDER BY officeCode , jobTitle;
+-----------+-----------+--------------------+------------+
| lastName  | firstName | jobTitle           | officeCode |
+-----------+-----------+--------------------+------------+
| Murphy    | Diane     | President          | 1          |
| Bow       | Anthony   | Sales Manager (NA) | 1          |
| Jennings  | Leslie    | Sales Rep          | 1          |
| Thompson  | Leslie    | Sales Rep          | 1          |
| Firrelli  | Jeff      | VP Marketing       | 1          |
| Patterson | Mary      | VP Sales           | 1          |
| Firrelli  | Julie     | Sales Rep          | 2          |
| Patterson | Steve     | Sales Rep          | 2          |
| Tseng     | Foon Yue  | Sales Rep          | 3          |
| Vanauf    | George    | Sales Rep          | 3          |
| Bondur    | Loui      | Sales Rep          | 4          |
| Hernandez | Gerard    | Sales Rep          | 4          |
| Castillo  | Pamela    | Sales Rep          | 4          |
| Gerard    | Martin    | Sales Rep          | 4          |
| Nishi     | Mami      | Sales Rep          | 5          |
| Kato      | Yoshimi   | Sales Rep          | 5          |
| Fixter    | Andy      | Sales Rep          | 6          |
| Marsh     | Peter     | Sales Rep          | 6          |
| King      | Tom       | Sales Rep          | 6          |
| Bott      | Larry     | Sales Rep          | 7          |
| Jones     | Barry     | Sales Rep          | 7          |
+-----------+-----------+--------------------+------------+
21 rows in set (0.00 sec)

仅当表达式之一的计算结果为 TRUE 时,OR 运算符才计算结果为 TRUE

jobtitle = 'Sales Rep' OR officeCode = 1

因此,查询返回任何职位为Sales Rep或officeCode 1 的员工。

将 MySQL WHERE 子句与 BETWEEN 运算符示例一起使用

如果值在值范围内,则 BETWEEN 运算符返回 TRUE

expression BETWEEN low AND high

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

SELECT firstName, lastName, officeCode
FROMemployees
WHEREofficeCode BETWEEN 1 AND 3
ORDER BY officeCode;
+-----------+-----------+------------+
| firstName | lastName  | officeCode |
+-----------+-----------+------------+
| Diane     | Murphy    | 1          |
| Mary      | Patterson | 1          |
| Jeff      | Firrelli  | 1          |
| Anthony   | Bow       | 1          |
| Leslie    | Jennings  | 1          |
| Leslie    | Thompson  | 1          |
| Julie     | Firrelli  | 2          |
| Steve     | Patterson | 2          |
| Foon Yue  | Tseng     | 3          |
| George    | Vanauf    | 3          |
+-----------+-----------+------------+
10 rows in set (0.00 sec)

将 MySQL WHERE 子句与 LIKE 运算符示例一起使用

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

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

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

SELECT firstName, lastName
FROMemployees
WHERElastName LIKE '%son'
ORDER BY firstName;
+-----------+-----------+
| firstName | lastName  |
+-----------+-----------+
| Leslie    | Thompson  |
| Mary      | Patterson |
| Steve     | Patterson |
| William   | Patterson |
+-----------+-----------+
4 rows in set (0.00 sec)

使用带有 IN 运算符示例的 MySQL WHERE 子句

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

value IN (value1, value2,...)

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

SELECT firstName, lastName, officeCode
FROMemployees
WHEREofficeCode IN (1 , 2, 3)
ORDER BY officeCode;
+-----------+-----------+------------+
| firstName | lastName  | officeCode |
+-----------+-----------+------------+
| Diane     | Murphy    | 1          |
| Mary      | Patterson | 1          |
| Jeff      | Firrelli  | 1          |
| Anthony   | Bow       | 1          |
| Leslie    | Jennings  | 1          |
| Leslie    | Thompson  | 1          |
| Julie     | Firrelli  | 2          |
| Steve     | Patterson | 2          |
| Foon Yue  | Tseng     | 3          |
| George    | Vanauf    | 3          |
+-----------+-----------+------------+
10 rows in set (0.00 sec)

将 MySQL WHERE 子句与 IS NULL 运算符一起使用

要检查一个值是否为 NULL,请使用 IS NULL 运算符,而不是等于运算符 (=)。如果值为 NULL,则 IS NULL 运算符返回 TRUE

value IS NULL

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

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

SELECT lastName, firstName, reportsTo
FROMemployees
WHEREreportsTo IS NULL;
+----------+-----------+-----------+
| lastName | firstName | reportsTo |
+----------+-----------+-----------+
| Murphy   | Diane     |      NULL |
+----------+-----------+-----------+
1 row in set (0.01 sec)

将 MySQL WHERE 子句与比较运算符一起使用

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

Operator Description
= 等于。您可以将它与几乎任何数据类型一起使用。
<> 或 != 不等于
< 小于。您通常将它与数字和日期/时间数据类型一起使用。
> 大于
<= 小于或等于
>= 大于或等于

以下查询使用不等于 (<>) 运算符来查找不是Sales Rep的所有员工:

SELECT lastname, firstname, jobtitle
FROMemployees
WHEREjobtitle <> 'Sales Rep';
+-----------+-----------+----------------------+
| lastname  | firstname | jobtitle             |
+-----------+-----------+----------------------+
| Murphy    | Diane     | President            |
| Patterson | Mary      | VP Sales             |
| Firrelli  | Jeff      | VP Marketing         |
| Patterson | William   | Sales Manager (APAC) |
| Bondur    | Gerard    | Sale Manager (EMEA)  |
| Bow       | Anthony   | Sales Manager (NA)   |
+-----------+-----------+----------------------+
6 rows in set (0.00 sec)

以下查询查找office code大于 5 的员工:

SELECT lastname, firstname, officeCode
FROMemployees
WHERE officecode > 5;
+-----------+-----------+------------+
| lastname  | firstname | officeCode |
+-----------+-----------+------------+
| Patterson | William   | 6          |
| Bott      | Larry     | 7          |
| Jones     | Barry     | 7          |
| Fixter    | Andy      | 6          |
| Marsh     | Peter     | 6          |
| King      | Tom       | 6          |
+-----------+-----------+------------+
6 rows in set (0.00 sec)

以下查询返回office code小于或等于 4 (<=4) 的员工:

SELECT lastname, firstname, officeCode
FROMemployees
WHERE officecode <= 4;
+-----------+-----------+------------+
| lastname  | firstname | officeCode |
+-----------+-----------+------------+
| Murphy    | Diane     | 1          |
| Patterson | Mary      | 1          |
| Firrelli  | Jeff      | 1          |
| Bondur    | Gerard    | 4          |
| Bow       | Anthony   | 1          |
| Jennings  | Leslie    | 1          |
| Thompson  | Leslie    | 1          |
| Firrelli  | Julie     | 2          |
| Patterson | Steve     | 2          |
| Tseng     | Foon Yue  | 3          |
| Vanauf    | George    | 3          |
| Bondur    | Loui      | 4          |
| Hernandez | Gerard    | 4          |
| Castillo  | Pamela    | 4          |
| Gerard    | Martin    | 4          |
+-----------+-----------+------------+
15 rows in set (0.00 sec)

总结

  • 使用 WHERE 子句按条件过滤行
  • MySQL 在 FROM 子句之后和 SELECT 和 ORDER BY 子句之前评估 WHERE 子句。

mysql where[猿教程]相关推荐

  1. linux 6.4简单使用mysql,Linux系统下Mysql使用简单教程(一)

    如果你会查询这些相关的问题,说明你是一个正在或者准备从事IT的程序猿,对于一个程序猿而言,不会使用linux系统的程序猿不是一好的程序猿哦!因为windows有时候真的让人很抓狂,而本人也相信没有什么 ...

  2. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  3. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...

    内容简介 郑明秋.蒙连超.赵海侠主编的<MySQL数据库实用教程>是作者在多年的数据库开发实践与教学经验的基础上,根据计算机相关专业的职业岗位能力需求及学生的认知规律倾心组织编写的.本教材 ...

  4. mysql安装图解 mysql图文安装教程(详细说明)

    MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版本. mysql 下载地址 http://www.jb51.net/softs/2193.html 下面的是M ...

  5. centos得mysql安装教程_Centos下Mysql安装图文教程_MySQL

    Mysql是比较常用的数据库,日常开发中也是采用地比较多.工欲善其事必先利其器,本文特地来讲解下如何在centos(其他linux发行版类似)下安装Mysql.首先准备的材料:Mysql,我这里采用的 ...

  6. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

  7. mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术 -亦是美网络...

    对编程有一定了解的小伙伴都知道,一般情况下使用微软的visual studio进行编程开发都会搭配自家的SQL server.Access数据库,而开发web程序一般情况下PHP搭配MySQL使用,但 ...

  8. mysql 基本使用教程(源于网络)

    3.1. 连接与断开服务器3.2. 输入查询3.3. 创建并使用数据库 3.3.1. 创建并选择数据库3.3.2. 创建表3.3.3. 将数据装入表中3.3.4. 从表检索信息 3.4. 获得数据库和 ...

  9. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

最新文章

  1. jQuery中的页面载入($()、ready(fn)、onload)
  2. InstallShield使用——菜单部分
  3. 各个版本通道_绝地求生各个参数对画面的影响,软硬件优化帧数,拒绝做睁眼瞎...
  4. 如何向5岁小孩解释什么是支持向量机(SVM)?
  5. nginx配置长连接
  6. VTK:图表之OutEdgeIterator
  7. mysql api查询例子_MySQL数据库:常用查询的例子Frommysqlapi
  8. php一句话过狗,整理的最新WebSHell (php過狗一句話,過狗菜刀,2016過狗一句話,2016php免殺一句話)...
  9. Nacos笔记-对Nacos初步认识
  10. Nginx根据路径设置静态资源
  11. 大数据之-Hadoop之HDFS_基于JAVA的开发_客户端环境测试---大数据之hadoop工作笔记0055
  12. 顶级赛事,大神现身,速来观战
  13. PyCharm----中文显示乱码的解决方法总结
  14. gephi java教程_如何使用java 生成gephi类似使用YifanHu's Multilevel算法生成的gexf文件?...
  15. 附资料:工程总承包项目管理流程图(全套)
  16. 远程桌面访问软件:TeamViewer
  17. 大专学历计算机专业可以积分,持有大专紧缺急需专业可直接申请上海居住证积分?...
  18. 使用spire.doc实现word文档合并
  19. 利用深度强化学习训练机械臂环境
  20. Comet OJ - 2019国庆欢乐赛(赛后整理)

热门文章

  1. 软件开发项目计划编制过程(转)
  2. 海康sdk docker虚拟化
  3. 微信开放平台开发第三方授权登陆:微信扫码登录
  4. win10禁用计算机维护,想要电脑不卡,你必须知道win10必须禁用的服务有哪些
  5. 蓝牙耳机品牌推荐:2023年口碑最好的蓝牙耳机品牌排行
  6. [UER #1] DZY Loves Graph
  7. 计算机专业在广东省的录取分数线,深圳大学广东本科批稳居广东高校前4!2019各省录取分数线发布!...
  8. 【JavaScript】预解析
  9. 华为防火墙应用层过滤--URL
  10. android登录实现回显用户名和密码