学习目标
- 使用where子句
- where子句操作符
- 检查单个值
- 不匹配检查
- 范围检查
一.使用where子句
数据库当中,通常会根据特定操作或报告的提取表需要数据的子集。
只检索所需数据,需要指定搜索条件search criteria(过滤条件filter criteria)。
1.where检查一个列是否具有指定相等的值
需求:查询产品表中prod_name,prod_price,prod_desc字段,过滤条件产品价格=2.50
select prod_name,prod_price,prod_desc from products
where prod_price=2.50;
格式:select 列名1,列名2,列名3 from 表名 where 列名2=2.50;
SQL过滤与应用过滤 :
- SQL的SELECT语句为客户机应用检索出超过实际所需的数据,然后客户机代码对返回数据进行循环,以提取出需要的行。
- 让客户机应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。
- 如在客户机上过滤数据,服务器不得不通过网络发送多余的数据,这将导致网络带宽的浪费。
2.WHERE子句的位置
WHERE子句在前,ORDER BY再后, 否则将会产生错误 。
select prod_name,prod_price,prod_desc from products
where prod_price>5
order by prod_price,prod_name;
二.where子句操作符
操作符与说明:
1.检查单个列
需求:查询产品表中prod_name,prod_price,prod_desc字段,过滤条件产品名称='fuses'
select prod_name,prod_price,prod_desc from products
where prod_name='fuses';
格式:select 列名1,列名2,列名3 from 表名 where 列名1='fuses';
检查WHERE prod_name=‘fuses’语句,它返回prod_name的值为Fuses的一行。
MySQL在执行匹配时默认不区分大小写,所以fuses与Fuses匹配
例子1:产品价格小于10,按升序排列
select prod_name,prod_price,prod_desc from products
where prod_price<10
order by prod_price,prod_name;
2.不匹配检查
需求:不是由供应商1003制造的所有产品
select vend_id,prod_name,prod_price,prod_desc from products
where vend_id <> 1003;
格式:select 列名1,列名2,列名3,列名4 from 表名 where 列名1 <> 1003;
单引号用来限定字符串。用来与数值列进行比较的值不用引号 。
等同于:
select vend_id,prod_name,prod_price,prod_desc from products
where vend_id != 1003;
3.范围值检查(BETWEEN)
BETWEEN需要两个值,即范围的包括开始值和包括结束值。 [2,3]这两个值必须用AND关键字分隔。
需求:查询价格在2.5到10之间的产品名称和产品价格,价格按升序排列
select prod_name,prod_price from products
where prod_price between 2.5 and 10
order by prod_price;
格式:select 列名1,列名2 from 表名 where 列名2 between 2.5 and 10;
4.空值检查
在一个列不包含值时,称其为包含空值NULL。
NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。
SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。
这个WHERE子句就是IS NULL子句。
需求:顾客email是空的,顾客的id
select cust_id from customers
where cust_email is null ;
格式:select 列名1 from 表名 where 列名2 is null;
三.总结
学习了:
- 何用SELECT语句的WHERE子句过滤返回的数据。
- 对相等、不相等、大于、小于、值的范围。
- 以及NULL值等进行测试。
多思考,多总结,多输出,一键四连~
但行好事,莫问前程,我们下篇见~
往期文章:
5.排序检索数据
4.检索数据
3.使用MySQL