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

MySQL:在 SELECT 查询中过滤数据

SELECT … WHERE …

需要有条件的从数据表中查询数据,可以使用 WHERE 关键字来指定查询条件

SELECT select_list  FROM tablename
WHEREsearch_condition;

查询条件:

  • 带 比较运算符 和 逻辑(布尔)运算符 的查询条件

    • AND:记录满足所有查询条件时,才会被查询出来。
    • OR:记录满足任意一个查询条件时,才会被查询出来。
    • XOR:记录满足其中一个条件,且不满足另一个条件时,才会被查询出来
  • BETWEEN AND 关键字的查询条件

  • IS NULL 关键字的查询条件

  • INNOT IN 关键字的查询条件

  • LIKE 关键字的查询条件

当执行带有 WHERE 子句的 SELECT 语句时,MySQL 计算 WHERE 子句在 FROM 子句之后,在 SELECTORDER BY 子句之前

在这里插入图片描述

SELECT … DISTINCT …

在 MySQL 中使用 SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,可以使用 DISTINCT 关键字去重

DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户。

SELECT DISTINCT columnlists
FROM tablename;
  • DISTINCT 关键字只能在 SELECT 语句中使用

  • 在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前面。

  • 如果 DISTINCT 关键字后有多个字段,则会对多个字段进行组合去重,也就是说,只有多个字段组合起来完全是一样的情况下才会被去重

  • 若字段中包含多个 NULL 值,会将多个 NULL 值视为相同的值,对多个NULL进行去重

当执行带有 DISTINCT 子句的 SELECT 语句时,MySQL会在 FROM, WHERE SELECT 子句之后,ORDER BY 子句之前计算 DISTINCT 子句:

在这里插入图片描述

SELECT … LIMIT …

当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。

这时可以用 LIMIT 关键字来限制查询结果返回的条数:

SELECT select_list FROM table_name 
LIMIT [offset,] row_count;
  • offset 用于指定查询的起始位置,开始位置为0,而不是1
  • row_count 用于指定最大返回行数,若大于查询总行数,则显示所有记录
  • offsetrow_count 均为正整数

![[LIMIT(ROW_COUNT).png]]

不指定初始位置

当仅使用 LIMIT 而不指定 OFFSET 时,查询将从结果集的第一条记录开始返回,直到达到指定的 row_count

SELECT select_name FROM table_name
LIMIT row_count;#等价于
LIMIT 0, row_count;

这里,LIMIT 0, row_count 中的 0 表示从第一条记录开始,row_count 是想要获取的记录数量。但通常,直接写 LIMIT row_count 就足够了,因为默认就是从第一条记录开始

与 OFFSET 关键字结合

OFFSET 关键字用于指定在开始返回记录之前要跳过的记录数。常用于实现分页功能。

SELECT select_name FROM table_name
LIMIT row_count OFFSET offset_;
  • offset_ 是想要跳过的记录数
  • row_count 是希望从跳过的记录之后获取的记录数。
  • 例如,如果想要获取第11到20条记录(假设每页显示10条),可以设置 OFFSET 10LIMIT 10
与 ORDER BY 结合

按照特定的排序顺序返回指定数量的结果, ORDER BY 子句会根据指定的排序表达式对结果集进行排序,然后 LIMIT 子句会从这个已排序的结果集中选取记录。

SELECT select_name FROM table_name
ORDER BY sort_expr
LIMIT [offset,] row_count;
  • sort_expr 是你想要根据其排序的表达式(可以是列名、列名的函数等)
  • [offset,] row_count 中的 offset 是可选的,用于指定跳过的记录数, row_count是希望获取的记录数。

SELECT … BETWEEN … AND …

IS NULL

IS NULL 关键字,用来判断字段的值是否为空值(NULL)空值不同于 0,也不同于空字符串

如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。

IS [NOT] NULL;

Mysql 并未内置 boolean 型数据,而是使用 TINYINT(1) 的数据来代表布尔型数据:1 代表 true0 代表 false

SELECT 1 IS NULL,         -- 00 IS NULL,         -- 0NULL IS NULL;      -- 1SELECT 1 IS NOT NULL,     -- 10 IS NOT NULL,     -- 1NULL IS NOT NULL;  -- 0
语句特性

为了与 ODBC 程序兼容,MySQL支持 IS NULL 操作符的一些特殊功能。

处理日期 ‘0000-00-00’

如果一个 DATE 或 DATETIME 型列有 NOT NULL [[非空约束]] ,并且含有类似于 ‘0000-00-00’ 的值,可以使用 IS NULL 语句来获取它们:

SELECT * 
FROM projects
WHERE complete_date IS NULL;

![[QUERY Sample1.png]]

@@sql_auto_is_null 变量

@@sql_auto_is_null 是 MySQL 数据库的系统变量,用于控制插入或更新操作中自增列是否允许为 NULL 值

它的值为 1 表示允许自增列的 NULL 值,值为 0 则表示不允许。默认情况下变量值为0。

@@sql_auto_is_null只读变量,无法直接修改,可以使用 SET 命令对该变量的值进行修改

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在qt的c++程序嵌入一个qml窗口
  • https改造-python https 改造
  • docker容器与宿主机时间同步
  • etcd节点通信的协议和端口
  • 电脑屏幕录制软件,分享4款(2024最新)
  • gbase8s自动同步数据及加入集群的脚本
  • 案例实践 | 基于长安链的福建省气象综合治理区块链平台
  • Android11 framework 禁止三方应用通过广播开机自启动-独立方案
  • 【LeetCode】71.简化路径
  • 九-2、Rocky Linux软件包管理与安装 学习笔记
  • CTF-pwn-虚拟化-vmmware 前置
  • Study--Oracle-07-ASM相关参数(三)
  • 钉钉 ai卡片 stream模式联调
  • 三星Unpacked发布会即将举行:有新款折叠屏手机,还有智能戒指
  • 3W单声道关断模式音频功率放大器AD4150B
  • Create React App 使用
  • express如何解决request entity too large问题
  • iOS编译提示和导航提示
  • JavaScript 奇技淫巧
  • MaxCompute访问TableStore(OTS) 数据
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Nodejs和JavaWeb协助开发
  • PhantomJS 安装
  • QQ浏览器x5内核的兼容性问题
  • Selenium实战教程系列(二)---元素定位
  • SpingCloudBus整合RabbitMQ
  • vue-loader 源码解析系列之 selector
  • Vue学习第二天
  • 大型网站性能监测、分析与优化常见问题QA
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端攻城师
  • 深入浅出webpack学习(1)--核心概念
  • 在weex里面使用chart图表
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #Linux(Source Insight安装及工程建立)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (一)VirtualBox安装增强功能
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .Net - 类的介绍
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET CLR Hosting 简介
  • .net 简单实现MD5
  • .NET 药厂业务系统 CPU爆高分析
  • .net 中viewstate的原理和使用
  • .NET成年了,然后呢?
  • .net对接阿里云CSB服务
  • .NET开发不可不知、不可不用的辅助类(一)
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Transactional事务注解内含乾坤?
  • [16/N]论得趣
  • [Apio2012]dispatching 左偏树