当前位置: 首页 > news >正文

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

第六章 - 数据过滤(where的用法)

    • 基本用法
    • where的条件限制符
        • 等于号`=`
        • 不等号`!=` 或者`<>`
        • 小于`<`
        • 大于`>`
        • 小于等于`<=`
        • 大于等于`>=`
        • between 的用法
        • 空值和非空值
    • 组合条件 and
    • 组合条件 or
    • and 和 or 的计算次序
    • in 和 not in

基本用法

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

在这里插入图片描述

where的条件限制符

等于号=

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

在这里插入图片描述

不等号!= 或者<>

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

在这里插入图片描述

小于<

  • 查询年龄小于10岁的数据,比10小的数,不包含10
select*
fromtest.titanic
whereage < 10

在这里插入图片描述

大于>

  • 查询年龄大于 岁的数据
select*
fromtest.titanic
whereage > 60

在这里插入图片描述

小于等于<=

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

大于等于>=

  • 查询小于等于60岁的用户数据,不小于60的数,包含60.
select*
fromtest.titanic
whereage >= 60

在这里插入图片描述

between 的用法

  • 查询年龄在50到54岁之间的数据,between是包含50和54这两个值的。
select*
fromtest.titanic
whereage between 50 and 54

在这里插入图片描述

空值和非空值

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

完整数据带有null。

  • 筛选age为null的数据

select
*
from
test.test001
where
age is null

在这里插入图片描述

  • 筛选age不是null 的数据

select*
fromtest.test001
whereage is not null

在这里插入图片描述

组合条件 and

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

select`name`,`sex`,`age`,`fare`
fromtest.titanic
wheresex = 'male' and age > 60

在这里插入图片描述

组合条件 or

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

select`name`,`sex`,`age`,`fare`
fromtest.titanic
wheresex = '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`
fromtest.titanic
where(age = 40 or age = 60) and fare > 50

在这里插入图片描述

in 和 not in

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

在这里插入图片描述

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

在这里插入图片描述

http://www.lryc.cn/news/9301.html

相关文章:

  • Oracle 定时任务例子
  • Android常用9种自动化测试框架对比,Appium有哪些优势?
  • 在vue2使用百度脑图的kityminder-core进行二次开发思维导图,给节点绑定数据后添加新的图标
  • FPGA时序约束与分析 --- 时序约束概述
  • 2022——寒假总结
  • C++11 Lambda表达式
  • 冰湖灾害遥感监测评价与模拟分析
  • Highcharts.Chart
  • 遍历map的几种方法
  • RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考
  • K8s常见面试题总结
  • OpenFeign 自定义解码器Decoder 失效
  • c++练习题8
  • Python循环语句代码详解:while、for、break
  • vue父子组件传值不能实时更新
  • 2023美赛A题思路数据代码分享
  • 【蓝桥杯集训·每日一题】AcWing 3768. 字符串删减
  • Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表
  • 降雨量实时监测系统压电式雨量计
  • 滑动相关的原理以及用滤波器实现滑动相关(匹配滤波器捕获DMF)
  • 计算机网络笔记(三)—— 数据链路层
  • 【日常】矩阵正态分布参数检验问题
  • QML矩形(Rectangle)
  • CSS自定义鼠标样式
  • 春招Leetcode刷题日记-D4-双指针算法-滑动窗口快慢指针
  • 【go】结合一个go开源项目分析谷歌浏览器cookie为什么不安全 附go项目导包失败怎么解决教程
  • Windows瘦身方法
  • 19. 删除链表的倒数第 N 个结点
  • 【Linux】网络编程 - 基础概念
  • Unity 多语言 轻量高效的多语言工具集 LanguageManager