过滤数据
一、使用where子句
当根据特定条件搜索数据时,只需要指定特定条件即过滤条件。
这个例子从表中检索所有prod_price=2.50的列。
二、where子句操作符
where的操作符有等于(=)、不等于(<>、!=)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、在指定的两个值之间(BETWEEN…AND…)
1.检索单个值
这个例子就是返回了prod_name = ’fuses‘的一列,而且mysql不区分大小写,所以Fuses也可。
这个例子检索所有prod_price小于10的列。
2.不匹配检查
当我们不想检索某个值时,可以使用不等符号。
这个例子检索所有vend_id不等于1003的列,并且只显示prod_name和prod_price.
<>和 != 是等价的,所以WHERE vend_id != 1003;也可。
3.范围值检查
查询某个范围的值,可以使用between操作符,但这个需要两个范围值。
这个例子就检索prod_price为5到10之间的列。(包含5和10)
4.空值检查
如果某个数据是空,例如有些人不想想显示自己的体重,就可以设置为空,where子句就有一个专门检查空值的操作符。
这个例子就检索出了cust_email为空的列。
数据过滤
一、组合WHERE子句
上一部分的where子句都是单一使用,但可以组合使用where子句。
1.AND操作符
表示检索同时满足多个条件的列。
这个例子检索所有vend_id = 1003,并且prod_price <= 10的列,AND 表示这两个条件要同时满足。
2.OR操作符
表示检索满足任一条件的列。
这个例子检索所有vend_id = 1002 或者 vend_id = 1003的列, 如果使用and则没有数据返回。
3.计算次序
当组合and和or操作符时,会出现一个有趣的问题。
例如我们想要检索所有 vend_id = 1002, 或者vend_id = 1003, 并且prod_price >= 10。
如下:
但这个检索却有prod_price小于10的列,这是因为mysql在处理and和or操作符时会优先处理and,
这个检索就变成了(vend_id = 1003并且prod_price >= 10)的列或者(vend_id = 1002)的所有列。
如果想得到我们想要的列,可以使用括号来改变检索次序。
二、IN操作符
圆括号还有另一种用法,IN操作符指定条件范围,范围中的每个条件都可以进行匹配。
这个例子就检索了,vend_id等于1002或者等于1003的列,这和WHERE vend_id = 1002 OR
vend_id = 1003;等价。
三、NOT操作符
where子句中的not操作符就是否定后面跟的条件。
这个例子就否定了后面跟的条件,检索所有vend_id不等于1002或不等于1003的列。