sql语法:where子句and和or的组合的心得体会。

表数据:在这里插入图片描述
情景需求:假如需要列出价格为10美元及以上,且由DLL01或BRS01制造的所有产品。

SQL写法一:
在这里插入图片描述
此种写法sql语句的执行顺序是先查询出由DLL01和BRS01制造的所有产品,也就是小括号里面的
sql,其查询结果为:
在这里插入图片描述
然后mysql自动再以此表为基础查询prod_price>10的行,其查询结果为:
在这里插入图片描述
以上是第一种sql写法,当然也有第二种,也是更为简便的一种。

SQL写法二:(也是or子句和and子句相结合的写法)
在这里插入图片描述
此种写法是or子句和and子句相结合的写法,or子句和and子句的顺序可以改变,或是这样:
在这里插入图片描述
你可能要问,or子句为什么要带小括号呢?
因为SQL(像多数语言一样)在处理or操作符前,优先处理and操作,而且小括号比and或or操作的更有优先权,所以在此例中,sql运行时先过滤的时小括号内的or条件,这事,sql语句才符合我们的要求。如果不带小括号:
在这里插入图片描述
将会出现下面这种结果:
在这里插入图片描述
此时SQL理解会先执行where后的vend_id=‘DLL01’ ,然后执行prod_price>10,也就是说sql只执行了这两个条件,并且这两个条件是or的关系,因为在这里插入图片描述
这个代码查询出来的结果也是上面那个结果。
但如果sql写成这样:
在这里插入图片描述
其查询结果则是:
在这里插入图片描述
说明sql先执行的是prod_price=10 AND vend_id =‘DLL01’,然后执行的是OR vend_id=‘BRS01’。

从这个事例也可以说明一个问题:where条件过滤时,and,or,()这三个的执行顺序是:小括号内语句的先执行,然后是and子句,然后是or子句。

*总结与提示:*在where子句中使用小括号。

任何时候使用具有and和or操作符的where子句,都应该使用小括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。

以上是本人学习《SQL必知必会》的学习笔记,表数据也是来源于此书。
本文知识笔记如有错误之处,还请诸位不吝赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值