本章将讲授如何使用SELECT语句的WHERE子句指定搜索条件。

使用WHERE子句

数据库表一般包含大量的数据,很少需要检索表中所有行。在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。

SELECT * FROM Product WHERE product_type = '办公用品';

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_数据


过滤当然也可以查出来表中的所有数据,然后写代码的编写规则对数据进行过滤。

但是这样做会大大的降低应用的性能,并且,如果在客户机上过滤数据,那么服务器不得不通过网络发送多余数据,这还会导致带宽的浪费。

使用顺序

WHERE子句的位置 在同时使用ORDER BYWHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。

WHERE子句操作符

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_MySQL_02

检查单个值

SELECT * FROM users WHERE name='Vth';

注意,MySQL默认是不区分大小写的。

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_搜索_03

不匹配检查

SELECT * FROM users WHERE name<>'Vth';

这会检索出所有名字不是vth的。

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_数据_04


何时使用引号

与字符串比较需要加引号。与数值比较不用加引号。

注意,!=<>是通用的。

范围值检查

SELECT * FROM users WHERE name BETWEEN 'vth' AND 'vthza';

这会把vth到vthza之间的都列出来。

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_数据_05


在使用BETWEEN时,必须指定两个值——所需范围的低端值和高端值。这两个值必须用AND关键字分隔BETWEEN匹配范围中所有的值,包括指定的开始值和结束值

空值检查

在一个列不包含值时,称其为包含空值NULL。
NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同
NULL是啥都没有,是虚无。 空格是有东西,只是看不出来。
SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。

SELECT * FROM Product WHERE purchase_price IS NULL;

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_MySQL_06


那不匹配NULL怎么办?

SELECT * FROM Product WHERE purchase_price IS NOT NULL;

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_搜索_07

注意,NULL即不是匹配条件,也不是不匹配条件。

举个栗子:下面是表数据

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_MySQL_08


我们按照purchase_price = 790 和 不等于790进行过滤,都未出现NULL。

mysqlr如何筛选出表数据某字段发生变化的行 mysql怎么筛选数据_搜索_09


所以我们可以推断出,NULL即不是匹配条件,也不是不匹配条件。