SQL必知必会-笔记(三)数据库基本操作(中)

高级数据过滤

AND

  • 问题:检索由供应商DLL01制造且价格小于等于4美元的所有产品的名称和价格
  • 解:
select prod_name,prod_price from Products where vend_id = 'DLL01' and prod_price <= 4;

OR

  • 问题:检索由指定供应商制造的所有产品的产品名和价格
  • 解:
select prod_name,prod_price from Products where vend_id = 'DLL01' or vend_id = 'BRS01';

求值顺序

  • 问题:检索出价格为10美元及以上,且由DLL01或BRS01制造的所有产品
  • 解:
select prod_name,prod_price from Products where prod_price >= 10 and vend_id = 'DLL01' or vend_id = 'BRS01';

乍一看,似乎没有问题,where prod_price >= 10 and vend_id = 'DLL01' or vend_id = 'BRS01'很符合题目,但是看一下结果:
1143442-20190131115339466-58832362.png
为什么会出现价格低于10美元的产品??

原因在于求值顺序,也就是AND在求值过程中优先级更高,操作符被错误的组合。

  • 正解:
select prod_name,prod_price from Products where prod_price >= 10 and (vend_id = 'DLL01' or vend_id = 'BRS01');

提示:任何时候使用具有ANDOR操作符的WHERE子句,都应该使用圆括号明确的分组操作符

IN

  • 问题:检索由供应商DLL01和BRS01制造的所有产品
  • 解:
select prod_name,prod_price from Products where vend_id in ('DLL01','BRS01');

可以看到IN完成了OR相同的功能,但是:

  • IN操作符比OR操作符执行的更快
  • IN操作符更加直观
  • IN最大的优点是可以包含其他SELECT语句,后续会介绍

NOT

WHERE子句中的NOT操作符有且只有一个功能,那就是否定其后所跟的任何条件

  • 问题:列出除DLL01之外的所有供应商制造的产品
  • 解:
select prod_name, prod_price from Products where not vend_id = 'DLL01';

也可以用<>完成

select prod_name,prod_price from Products where vend_id <> 'DLL01';

用通配符进行过滤

LIKE

%通配符
  • 问题:找出所有以Fish起头的产品
  • 解:
select prod_id, prod_name, prod_price from Products where prod_name like 'Fish%';
_通配符

_只匹配单个字符

select prod_id,prod_name,prod_price from Products where prod_name like '__ inch teddy bear';

1143442-20190131153051134-586733738.png

[ ]通配符

[ ]用来匹配指定位置的一个字符

  • 问题:找出所有名字以J或M起头的联系人
  • 解:
select cust_contact from Customers where cust_contact like '[JM]%' order by cust_contact;

MySQL中不可用

转载于:https://www.cnblogs.com/xLI4n/p/10341136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值