WHERE子句指定搜索条件
使用WHERE子句
根据特定操作或报告的需要提取表数据的子集,指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)
数据根据WHERE子句中指定的搜索条件进行过滤
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price = 2.50;
其检查一个列是否具有指定的值,据此进行过滤
SQL过滤与应用过滤
- 应用过滤的坏处
1.让应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。
2.服务器不得不通过网络发送多余的数据,导致网络带宽的浪费
WHERE子句位置
ORDER BY位于WHERE之后
WHERE子句操作符
MySQL除了支持相等=还支持一下操作符
- <> 不等于
- != 不等于
- < 小于
- <= 小于等于
- (> 大于)
- (>= 大于等于)
- BETWEEN 在指定的两个值之间
检查单个值
MySQL在执行匹配时默认不区分大小写
=
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_name = "fuses";
因为不区分大小写,虽然name为"fuses",但仍然可以检索出Fuses与其匹配
>
列出价格小于10美元的所有产品
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price < 10;
>=
列出价格小于等于10美元的所有产品
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price <= 10;
不匹配检查 <> !=
<>等价于!=
列出不是由供应商1003制造的所有产品
SELECT
prod_name,
prod_price
FROM
products
WHERE
vend_id <> 1003;
范围值检查 < > 、 <= 、 >= 、 BETWEEN AND
BETWEEN AND
需要两个值,范围的开始值和结束值。匹配范围中所有的值,包括指定的开始值和结束值
检索价格在5美元和10美元的产品
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price BETWEEN 5
AND 10;
空值检查
创建表时,可以指定其中的列是否可以不包含值,在一个列不包含值,称其为包含空值null
null
其与0、空字符串、空格不同
SELECT语句的WHERE有个特殊子句,可以用来检查具有null值的列,为IS NULL为null值或IS NOT NULL为非null值
搜索没有email的客户id
SELECT
cust_id
FROM
customers
WHERE
cust_email IS NULL;
null与不匹配
因为null值具有特殊含义,如果某个键含有null值,不管过滤条件怎样都不会返回有null的值的行
对应到customers表中即如果以cust_email作为搜索条件,不管条件怎样都不会返回有null值的该行
Comments | 0 条评论