MySQL:在 SELECT 查询中过滤数据

news2024/11/27 15:48:25

SELECT … WHERE …

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

SELECT select_list  FROM tablename
WHERE
    search_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,         -- 0
       0 IS NULL,         -- 0
       NULL IS NULL;      -- 1

SELECT 1 IS NOT NULL,     -- 1
	   0 IS NOT NULL,     -- 1
	   NULL 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 命令对该变量的值进行修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win11在虚拟环境安装PyTorch的教程

一、前言 pytorch直接安装到anaconda的base上面不是什么好习惯。我的亲身经历是,将pytorch和其它软件如openCV,openGL等混装,然后互相冲撞,使得图像方面的软件不能工作。本篇我们讲述将pytorch独立安装到可靠、干净的虚拟环境中。…

VSCode部署Pytorch机器学习框架使用Anaconda(Window版)

目录 1. 配置Anaconda1.1下载安装包1. Anaconda官网下载2, 安装Anaconda 1.2 创建虚拟环境1.3 常用命令Conda 命令调试和日常维护 1.4 可能遇到的问题执行上述步骤后虚拟环境仍在C盘 2. 配置cuda2.1 查看显卡支持的cuda版本2.2 下载对应cuda版本2.3 下载对应的pytorch可能出现的…

Yolo-World网络模型结构及原理分析(三)——RepVL-PAN

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 网络结构2. 特征融合3. 文本引导(Text-guided)4. 图像池化注意力(Image-Pooling Attention)5. 区域文本匹配&…

直方图的最大长方形面积

前提知识:单调栈基础题-CSDN博客 子数组的最大值-CSDN博客 题目描述: 给定一个非负数(0和正数),代表直方图,返回直方图的最大长方形面积,比如,arr {3, 2, 4, 2, 5}&#xff0c…

关于Qt部署CMake导致“Failed to set working directory to“的问题

使用qt部署Cmake项目时,遇到"Failed to set working directory to"的错误(还没编译),然后查看部署信息发现: “The CXX compiler identification is unknown”、“CMake Error at xxxx/CMakeTestCXXCompiler…

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

【Python】PyMySQL 和 mysql-connector-python 的比较:差异详解

文章目录 1. PyMySQL2. mysql-connector-python3. 相同之处4. 不同之处性能功能特性兼容性错误处理 5. 性能比较6. 兼容性和依赖性7. 社区支持和文档8. 使用示例9. 总结 MySQL 是全球最流行的开源数据库之一,而 Python 作为一种广泛应用的编程语言,提供了…

【字少图多剖析微服务】深入理解Eureka核心原理

深入理解Eureka核心原理 Eureka整体设计Eureka服务端启动Eureka三级缓存Eureka客户端启动 Eureka整体设计 Eureka是一个经典的注册中心,通过http接收客户端的服务发现和服务注册请求,使用内存注册表保存客户端注册上来的实例信息。 Eureka服务端接收的…

Polaris系列-07.启动分析六

本篇分析 配置中心模块 启动流程: 先看启动配置参数: 进入方法: 先看看配置中心服务数据模型:初始化也是围绕着下面各个属性赋值... // Server 配置中心核心服务 type Server struct {cfg *Configstorage store.Sto…

51单片机13(动态数码管实验)

一、数码管动态显示原理 1、动态显示是利用减少段选线,分开位选线,利用位选线不同时选择通断,改变段选数据来实现的。 (1)多位数码管依然可以进行静态的一个显示,那么在前面我们介绍静态数码管的时候&…

VTK源码分析:Type System

作为一款开源跨平台的数据可视化代码库,VTK以其清晰的流水线工作方式、丰富的后处理算法、异种渲染/交互方式,而被众多CAx软件选作后处理实施方案。而异种渲染/交互方式的实现,主要是倚重于VTK的类型系统,因此,有必要对…

visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊

本文主要解决三个问题 visio保存一部分图 需求描述:在一个visio文件中画了很多个图,但我只想把其中一部分保存成某种图片格式,比如jpg emf png之类的,以便做后续的处理。 方法:超级容易。 选中希望保存的这部分图&…

免费【2024】springboot 爱看漫画小程序的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

分布式搜索之Elasticsearch入门

Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elastic Stack 又是什么呢&a…

使用docker swarm搭建ruoyi集群环境

整体目标 项目背景 领导给到了我一个客户,客户商业模式为成本制作,成本核算。其中涉及到大量涉密数据,且与我们现有产品几乎没有兼容点(我们是一套低代码的框架,客户有很多业务二开) 测试环境给到了我6台…

黑马微服务拆分2 (路由 登录 配置)

会利用微服务网关做请求路由 会利用微服务网关做登录身份校验 会利用Nacos实现统一配置管理 会利用Nacos实现配置热更新 今天粗略的完成了黑马笔记里边的代码实现 其实本身黑马商城的源码就写的逻辑有漏洞,加上对业务没有仔细分析 导致出现的bug调试了很久 这…

如何判断自己的数据格式适合使用json还是Excel的形式存入neo4j数据库

判断自己的数据格式适合使用JSON还是Excel的形式存入Neo4j数据库,主要取决于数据的复杂性、规模、结构、以及你或你的团队对这两种格式的熟悉程度。以下是一些关键因素,可以帮助你做出决策: 数据的复杂性: 如果你的数据包含大量的…

【Zynq UltraScale+ RFSoC】~~~

Zynq UltraScale RFSoC 系列为 5G 无线和射频级模拟应用引入了颠覆性的集成和架构突破,可直接支持整个 5G sub-6GHz 频段。这个创新系列现已开始批量生产。此设计演示展示了多通道(8T8R 或 16T16R)Zynq UltraScale RFSoC 评估工具工具工具&am…

ICMP 和 IGMP 的区别

ICMP 和 IGMP 协议 IP 层分支图 ICMP(Internet Control Message Protocol,因特网控制信息协议) 用于补充 IP 传输数据报的过程中,发送主机无法确定数据报是否到达目标主机。 ICMP 报文分为出错报告报文和查询报文两种。 若数据…

C语言 | Leetcode C语言题解之第263题丑数

题目&#xff1a; 题解&#xff1a; bool isUgly(int n) {if (n < 0) {return false;}int factors[] {2, 3, 5};for (int i 0; i < 3; i) {while (n % factors[i] 0) {n / factors[i];}}return n 1; }