and ,or,not operators,逻辑运算符,and>or,and优先评估

and

都为真时才为真

/*选择customers的所有列
对每位顾客都会检查where子句
满足where条件的顾客会在结果表中返回
(其中birth_date大于1990-01-01,并且points大于1000)*/
SELECT *
FROM Customers
WHERE birth_date > '1990-01-01' AND points > 1000

or: 只要有一个结果正确就在结果表中返回

/*选择customers的所有列
对每位顾客都会检查where子句
满足where条件的顾客会在结果表中返回
or:只要有一个结果正确就在结果表中返回
(其中birth_date大于1990-01-01,并且points大于1000)*/
SELECT *
FROM Customers
WHERE birth_date > '1990-01-01' OR points > 1000

and的优先级大于or

 

/*我们想要获得
1990年后出生或者points大于1000并且位于va的顾客*/
SELECT *
FROM Customers
WHERE birth_date > '1990-01-01' OR points > 1000 AND state='va'
/*and优先评估
执行查询的时候
首先评估points > 1000 and state='va'这个条件
*/
/*可以使用括号便于理解*/
SELECT *
FROM Customers
WHERE birth_date > '1990-01-01' OR 
      (points > 1000 AND state='va')

not逻辑运算符,用于否定一个条件 

/*我们想要获得
1990年前出生且points小于1000并且位于va的顾客*/
SELECT *
FROM Customers
WHERE NOT (birth_date > '1990-01-01' OR points > 1000)
/*数学小技巧
非(P或Q)=非P且非Q
每当你用not运算符
可以简化表达式
否定birth_date > '1990-01-01'条件即birth_date <= '1990-01-01'
类似的,我们可以得到下面等价的代码
*/
SELECT *
FROM Customers
WHERE birth_date <= '1990-01-01' and points <= 1000

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值