# MySQL WHERE 子句
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
### 语法
以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:
~~~
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
~~~
* 查询语句中你可以使用一个或者多个表,表之间使用逗号,分割,并使用WHERE语句来设定查询条件。
* 你可以在 WHERE 子句中指定任何条件。
* 你可以使用 AND 或者 OR 指定一个或多个条件。
* WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
* WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
以下为操作符列表,可用于 WHERE 子句中。
下表中实例假定 A 为 10, B 为 20
| 操作符 | 描述 | 实例 |
| --- | --- | --- |
| \= | 等号,检测两个值是否相等,如果相等返回true | (A = B) 返回false。 |
| <>, != | 不等于,检测两个值是否相等,如果不相等返回true | (A != B) 返回 true。 |
| \> | 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true | (A > B) 返回false。 |
| < | 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true | (A < B) 返回 true。 |
| \>= | 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true | (A >= B) 返回false。 |
| <= | 小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true | (A <= B) 返回 true。 |
如果我们想在 MySQL 数据表中读取指定的数据,WHERE 子句是非常有用的。
使用主键来作为 WHERE 子句的条件查询是非常快速的。
如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。
* * *
## 从命令提示符中读取数据
我们将在SQL SELECT语句使用WHERE子句来读取MySQL数据表 runoob\_tbl 中的数据:
实例
以下实例将读取 runoob\_tbl 表中 runoob\_author 字段值为 Sanjay 的所有记录:
## SQL SELECT WHERE 子句
SELECT \* from runoob\_tbl WHERE runoob\_author\='菜鸟教程';
输出结果:
![](https://www.runoob.com/wp-content/uploads/2014/03/CED9CA9C-E4C7-4809-875C-A7E48F430059.jpg)
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。
如下实例:
## BINARY 关键字
mysql\> SELECT \* from runoob\_tbl WHERE BINARY runoob\_author\='runoob.com'; Empty set (0.01 sec) mysql\> SELECT \* from runoob\_tbl WHERE BINARY runoob\_author\='RUNOOB.COM'; +-----------+---------------+---------------+-----------------+ | runoob\_id | runoob\_title | runoob\_author | submission\_date | +-----------+---------------+---------------+-----------------+ | 3 | JAVA 教程 | RUNOOB.COM | 2016\-05\-06 | | 4 | 学习 Python | RUNOOB.COM | 2016\-03\-06 | +-----------+---------------+---------------+-----------------+ 2 rows in set (0.01 sec)
实例中使用了**BINARY**关键字,是区分大小写的,所以**runoob\_author='runoob.com'**的查询条件是没有数据的。
* * *
## 使用PHP脚本读取数据
你可以使用 PHP 函数的 mysqli\_query() 及相同的 SQL SELECT 带上 WHERE 子句的命令来获取数据。
该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli\_fetch\_array() 来输出所有查询的数据。
### 实例
以下实例将从 runoob\_tbl 表中返回使用 runoob\_author 字段值为RUNOOB.COM的记录:
## MySQL WHERE 子句测试:
菜鸟教程 MySQL WHERE 子句测试'; echo '教程 ID标题作者提交日期'; while($row = mysqli\_fetch\_array($retval, MYSQLI\_ASSOC)) { echo " {$row\['runoob\_id'\]} ". "{$row\['runoob\_title'\]} ". "{$row\['runoob\_author'\]} ". "{$row\['submission\_date'\]} ". ""; } echo ''; // 释放内存 mysqli\_free\_result($retval); mysqli\_close($conn); ?>
输出结果如下所示:
##
**where:**数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。
**group by:**对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。
**having:**用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。
**执行顺序**
select –>where –> group by–> having–>order by
上面执行顺序有误。谷歌来的顺序是这样的
1. FROM, including JOINs
2. WHERE
3. GROUP BY
4. HAVING
5. WINDOW functions
6. SELECT
7. DISTINCT
8. UNION
9. ORDER BY
10. LIMIT and OFFSET
- PHP
- php 简单语法
- php 语法
- PHP书写归范总结
- 代码缩进
- 变量赋值时候
- if条件判断
- 避免嵌入式赋值
- 函数和方法的注释
- php 开发常见问题总结
- 1、查找两个经纬度之间的距离
- 2、PHP常量详解:define和const的区别
- 3、常见面试题及特殊情况
- mysql
- MySQL 介绍
- MySQL 及 SQL 注入
- mysql常见问题
- MySQL数据类型
- MySQL where语句
- MySQL alter 命令
- MySQL 索引
- MySQL 复制表
- MySQL 处理重复数据
- redis
- redis介绍
- redis数据类型(共5种 )
- redis常见问题及使用场景
- redis事务
- Redis 分区
- Linux
- Linux介绍
- Linux 系统目录结构
- Linux 文件与目录管理
- shell
- Shell 教程介绍
- html+css+js
- 优秀技术文章
- 技术链接
- go语言
- go开发规范及注意事项
- go简单语法
- go开发技术总结
- 博客
- 小程序
- 1、页面跳转