Mysql入门系列四:过滤数据

数据库表中一般包含大量数据,而我们一般需要的是表数据的子集,所以只要指定好搜索条件,就可以检索到我们想要的数据

本节对应的是《Mysql必知必会》六、七章

过滤数据

通过WHERE子句指定搜索条件

使用WHERE子句

WHERE子句在FROM子句后面,ORDER BY子句在WHERE子句后面,因为先选出数据再排序

#查询价格为2.50的商品的名字
select prod_name,prod_price from products where prod_price = 2.50;

这个是简单的判断数值相等

WHERE子句操作符

操 作 符 说    明
= 等于
<> 不等于
!=   不等于
< 小于
<=   小于等于
> 大于
>=   大于等于
BETWEEN 在指定的两个值

检查单个值

#查询商品名称为fuses的商品和价格
select prod_name,prod_price from products where prod_name = 'fuses';

需要注意的是商品名是大写的Fuses,也就是说Mysql默认不区分大小写,另外字符串需要用单引号

#查询价格小于等于10的所有商品
select prod_name,prod_price from products where prod_price <= 10;

不匹配检查

#不是由供应商1003制造的产品
select vend_id,prod_name from products where vend_id != 1003;

其中  != 可以换成 <>

范围值检查

利用BETWEEN操作符检查某个范围的值

#查询价格为5-10的商品
select prod_name,prod_price from products where prod_price between 5 and 10;

需要注意的是between是闭区间,包括范围边界值5和10

#between用于字符
select prod_name,prod_price from products where prod_name between 'a' and 'z';

空值检查

如果一个列的值不存在,则称为空值NULL,需要注意的是空格和0是有值的,空值就是啥都没有

#查询顾客邮箱为空的顾客信息
select cust_id,cust_name from customers where cust_email is null;

数据过滤

上一部分主要是讲单一条件下对数据进行过滤,这一部分是通过组合WHERE子句来实现更高级的搜索条件

组合WHERE子句

操作符(operator) 用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符(logical operator),以AND子句的方式或OR子句的方式使用。

AND操作符,就是逻辑与

#查询由供应商1003制造且价格小于等于10的产品信息
select prod_id,prod_name,prod_price from products where vend_id=1003 and prod_price <= 10;

如果有更多的条件,每两个条件之间一个AND

OR操作符,就是逻辑或

#查询供应商1002和1003制造的商品信息
select prod_name,prod_price from products where vend_id = 1002 or vend_id = 1003;

计算次序

AND与OR操作符可以组合进行复杂的过滤,但是如果一起用的时候会有一个优先级的问题,AND优先级高于OR

#查询供应商1002和1003生产的产品价格大于等于10的产品信息
select prod_name,prod_price from products where vend_id=1002 or vend_id=1003 and prod_price >= 10;

从结果可以看出,有两个商品价格低于10,原因就是AND优先级高于OR,所以为了避免错误多个条件一定要用括号

select prod_name,prod_price from products where (vend_id=1002 or vend_id=1003 ) and prod_price >= 10;

IN操作符

IN操作符用来指定条件范围,范围中的每个条件都会进行匹配

#查询供应商1002和1003制造的产品信息
select prod_name,prod_price from products where vend_id in (1002,1003) order by prod_name;

上述语句与下面语句等价的

select prod_name,prod_price from products where vend_id=1002 or vend_id=1003 order by prod_name;

IN操作符主要有自己的优点

在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。

在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。

IN操作符一般比OR操作符清单执行更快。

IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。

NOT操作符

NOT操作符是否定后面的所有条件

#查询除1002和1003供应商之外其他供应商制造的产品信息
select vend_id,prod_name,prod_price from products where vend_id not in (1002,1003);

NOT在后面复杂的SQL语句中很有用

下一节将会讲解匹配搜索

发布了137 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wh_computers/article/details/101263122