The WHERE Clause | AND OR NOT Operator | WHERE子句 | AND OR NOT 运算符 | MySQL

条件查询

使用单个条件

案例一

使用比较运算符,返回points大于3000的客户数据

SELECT *
FROM Customers
WHERE points > 3000

结果
在这里插入图片描述

补充:比较运算符

=
<
<=
=
!= #不等号1
<> #不等号2

案例二

返回state在VA的顾客

SELECT *
FROM Customers
WHERE state = 'VA'
-- 处理字符序列(即文本数据),需要用引号围起字符串

VA的大小写不影响检索结果

结果
在这里插入图片描述

案例三

返回1999-1-1以后出生的顾客

SELECT *
FROM Customers
WHERE birth_date > '1990-01-01'
-- 在SQL里引用日期,也需要带引号

练习

返回今年的订单(2019年)

SELECT *
FROM orders
WHERE  '2019-01-01' <= order_date 

在这里插入图片描述

OR AND NOT 运算符

合并多个条件

使用运算符,将多个条件合并

AND

两个条件需同时满足

SELECT *
FROM customers
WHERE birth_date > '1990-01-01' AND points > 1000

结果
在这里插入图片描述

OR

满足一个条件即可

SELECT *
FROM customers
WHERE birth_date > '1990-01-01' OR points > 1000

结果
在这里插入图片描述

两个运算符一起使用

案例一

SELECT *
FROM customers
WHERE birth_date > '1990-01-01' OR points > 1000 AND state = 'VA'

结果
在这里插入图片描述

案例二

代码一和代码二的结果是一致的

代码一
SELECT *
FROM customers
WHERE NOT (birth_date > '1990-01-01' OR points > 1000 )
代码二
SELECT *
FROM customers
WHERE  (birth_date <= '1990-01-01' AND points <= 1000 )

结果一致在这里插入图片描述

练习

从order_items表中获得order#6的项目且项目total price超过30

SELECT * 
FROM sql_store.order_items
WHERE order_id = 6 AND  unit_price * quantity > 30 

结果
在这里插入图片描述

疑问

代码一和代码二为什么返回的值不一样?

代码一

SELECT *
FROM customers
WHERE  NOT (birth_date > '1990-01-01' OR points > 1000 AND state = 'VA')

结果
在这里插入图片描述

代码二

SELECT *
FROM customers
WHERE  (birth_date <= '1990-01-01' and points <= 1000 OR state != 'VA')

结果
在这里插入图片描述

其它

  • 非( P 或 Q) = (非 P) 且 ( 非 Q)
  • MySQL 中逻辑运算符的优先级:not > and > or
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值