WHERE子句指定搜索条件

使用WHERE子句

根据特定操作或报告的需要提取表数据的子集,指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)
数据根据WHERE子句中指定的搜索条件进行过滤

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	prod_price = 2.50;

image.png
其检查一个列是否具有指定的值,据此进行过滤

SQL过滤与应用过滤

  • 应用过滤的坏处
    1.让应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。
    2.服务器不得不通过网络发送多余的数据,导致网络带宽的浪费

WHERE子句位置

ORDER BY位于WHERE之后

WHERE子句操作符

MySQL除了支持相等=还支持一下操作符

  • <> 不等于
  • != 不等于
  • < 小于
  • <= 小于等于
  • (> 大于)
  • (>= 大于等于)
  • BETWEEN 在指定的两个值之间

检查单个值

MySQL在执行匹配时默认不区分大小写

=

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	prod_name = "fuses";

image.png
因为不区分大小写,虽然name为"fuses",但仍然可以检索出Fuses与其匹配

>

列出价格小于10美元的所有产品

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	prod_price < 10;

image.png

>=

列出价格小于等于10美元的所有产品

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	prod_price <= 10;

image.png

不匹配检查 <> !=

<>等价于!=
列出不是由供应商1003制造的所有产品

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	vend_id <> 1003;

image.png

范围值检查 < > 、 <= 、 >= 、 BETWEEN AND

BETWEEN AND

需要两个值,范围的开始值和结束值。匹配范围中所有的值,包括指定的开始值和结束值
检索价格在5美元和10美元的产品

SELECT
	prod_name,
	prod_price 
FROM
	products 
WHERE
	prod_price BETWEEN 5 
	AND 10;

image.png

空值检查

创建表时,可以指定其中的列是否可以不包含值,在一个列不包含值,称其为包含空值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;

image.png

null与不匹配

因为null值具有特殊含义,如果某个键含有null值,不管过滤条件怎样都不会返回有null的值的行
对应到customers表中即如果以cust_email作为搜索条件,不管条件怎样都不会返回有null值的该行
image.png


这个家伙很懒,啥也没有留下😋