第六章 - 数据过滤where(where与and和or的组合用法)

本文介绍了SQL查询中WHERE子句的基本用法,包括等于、不等于、小于、大于、小于等于和大于等于等条件限制符,以及BETWEEN、NULL值的处理。此外,还讨论了AND、OR逻辑运算符的组合条件,以及IN和NOTIN的操作。通过示例展示了如何使用这些条件进行数据筛选。
摘要由CSDN通过智能技术生成

基本用法

  • 在查询语句中,可以根据需要使用where语句来对指定搜索条件进行过滤,得到需要的数据,where语句在from语句之后使用。
# 查询售价大于600000的数据
select
	SalePrice
from
	test.houseprices
where
	SalePrice > 600000

在这里插入图片描述

where的条件限制符

等于号=
  • 只查询displayName 字段内等于'Michael Carter'的数据
select
	displayName,
	weight,
	nflId
from
	nfl.players
where
	# 此处'Michael Carter'可以使用单引号' 或者双引号 " ,表示(str)字符串格式
	displayName  = 'Michael Carter'

在这里插入图片描述

不等号!= 或者<>
  • 查询性别不为’male‘的数据
select
	*
from
	test.titanic
where
	# 或者 sex <> 'male'  表示的意义是一样的
	sex != 'male'

在这里插入图片描述

小于<
  • 查询年龄小于10岁的数据,比10小的数,不包含10
select
	*
from
	test.titanic
where
	age < 10

在这里插入图片描述

大于>
  • 查询年龄大于 岁的数据
select
	*
from
	test.titanic
where
	age > 60

在这里插入图片描述

小于等于<=
  • 查询小于等于6岁的用户数据,不大于6的数,包含6.
select
*
from
test.titanic
where
age <= 6
大于等于>=
  • 查询小于等于60岁的用户数据,不小于60的数,包含60.
select
	*
from
	test.titanic
where
	age >= 60

在这里插入图片描述

between 的用法
  • 查询年龄在50到54岁之间的数据,between是包含50和54这两个值的。
select
	*
from
	test.titanic
where
	age between 50 and 54

在这里插入图片描述

空值和非空值
  • 一般数据库内空值的数据都用null来填充(也有用’-999‘),当用null来填充空值的时候,就可以直接使用此语句来筛选。(用其他数据值填充的可以直接用等于=和不等于!=来筛选)

完整数据带有null。

  • 筛选age为null的数据

select
*
from
test.test001
where
age is null

在这里插入图片描述

  • 筛选age不是null 的数据

select
	*
from
	test.test001
where
	age is not null

在这里插入图片描述

组合条件 and

  • 进行多条件筛选时,可以使用and给where语句添加多个条件。
  • and表示筛选条件要同时满足,也就是“和”的意思。
  • 下面例子表示,查询同时满足 sex = male 和 age > 60 条件的数据。

select
	`name`,
	`sex`,
	`age`,
	`fare`
from
	test.titanic
where
	sex = 'male' and age > 60

在这里插入图片描述

组合条件 or

  • 进行多条件筛选时,也可以使用 or 给 where 语句添加多个条件
  • or 表示满足其中一个即可,也就是“或”的意思。
  • 下面例子和上面用同样的数据,只是把条件and变为or,数据量明显要多很多,因为只要满足sex=male或者age>60其中一个条件就可以,条件限制更宽松一些

select
	`name`,
	`sex`,
	`age`,
	`fare`
from
	test.titanic
where
	sex = 'male' or age > 60

在这里插入图片描述

and 和 or 的计算次序

  • 下面例子可以看到,我们想要的结果是要满足age=40或者age=60这两个条件,且满足fare>50,需要fare都大于50。但是输出结果后面的四行数据age=40都是fare是小于50的,和想要的结果不一样。
  • 这是因为,and在计算次序中的优先级高于or,系统会先计算and然后再计算or。

select
`name`,
`sex`,
`age`,
`fare`
from
test.titanic
where
age = 40 or age = 60 and fare > 50

在这里插入图片描述

  • 解决这种问题的方法:用括号来明确分组相应的操作符,因为括号的计算优先级要高于and和or
  • 具体如下,执行时会优先计算括号内的条件,然后再计算括号外的条件

select
	`name`,
	`sex`,
	`age`,
	`fare`
from
	test.titanic
where
	(age = 40 or age = 60) and fare > 50

在这里插入图片描述

in 和 not in

  • in用来指定条件范围,范围中的每个条件都可以进行匹配
  • in的取值全部都再括号中,由逗号分隔,当取值为字符时,需要用引号(单/双引号 都可以)来表示字符,例如('Jack','小明')
  • in与or条件的功能是相同的,用的代码更少且执行速度更快。
select
	`name`,
	`sex`,
	`age`,
	`fare`
from
	test.titanic
where
	# 表示 满足 age=50 或者 age=55,
	age in (50,55)

在这里插入图片描述

  • not in 表示否定后面的条件,如上面例子把in 改为not in 就表示所有age不是50或者55的数据。
select
	`name`,
	`sex`,
	`age`,
	`fare`
from
	test.titanic
where
	age not in (50,55)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜岐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值