MySQL的数据过滤主要使用WHERE子句来实现。
WHERE的作用
数据库通常会存储大量的数据,但是我们一般很少需要查询出所有数据。会根据需求筛选过滤出我们需要的数据,WHERE就是用来筛选我们需要的数据。
WHERE语法
SELECT column1, column2,...columnN
FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....]
示例数据
我们以customers表中的数据来演示WHERE子句的用法。
表customers
简单示例
例如我们只想看看城市为广州的客户信息,就可以使用WHERE来筛选。
SELECT * FROM customers WHERE `城市`='广州'
结果为:
WHERE子句操作符
上述的简单示例我们使用了操作符等号(=),此外WHERE后面还可以使用一下操作符:
多条件过滤
上面的简单示例我们只使用了一个城市过滤条件,下面我们再添加一个姓名为王五的过滤条件,可以这样写
SELECT * FROM customers WHERE `城市`='广州' AND `姓名`='王五'
结果为
通过使用AND来连接两个条件,表示要同时满足这两个条件的数据行才会被显示出来。可以继续使用AND来添加更多的条件,当没有数据行能够同时满足所有条件时,这时候就没有数据行被显示了。例如,我们再加一个省份是浙江省的条件:
SELECT * FROM customers WHERE `城市`='广州' AND `姓名`='王五' AND `省份`='浙江省'
结果为:
不匹配过滤
等号表示匹配,那么不等号就是不匹配,当我们希望显示的数据是排除掉某些数据行的时候,可以使用不等号(<>或!=),例如我想查询广东省以外的客户信息,可以这样写:
SELECT * FROM customers WHERE `省份`<>'广东省'
结果为:
范围值过滤
要过滤某个区间的数据可以使用BETWEEN,例如我们想查找客户ID在3到6之间的数据行,可以这样写
SELECT * FROM customers WHERE `客户ID` BETWEEN 3 AND 6
结果为:
注意:这里的BETWEEN 是包含起始值3和终止值6的
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
例如:
文本
--这是正确的: SELECT * FROM Customers WHERE 城市='北京' --这是错误的: SELECT * FROM Customers WHERE 城市=北京
数值
--这是正确的: SELECT * FROM Customers WHERE 客户ID=5 --这是错误的: SELECT * FROM Customers WHERE 客户ID='5'
此外WHERE后面还可以使用LIKE,IN,EXISTS和 IS [NOT] NULL等关键字,我们在后面会详细讲述他们的用法。