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

【SQL】掌握SQL查询技巧:数据筛选与限制

目录

  • 1. DISTINCT:避免重复记录
    • 1.1 示意图
    • 1.2 使用场景
  • 2. LIMIT:控制查询结果的数量
    • 2.1 示意图
    • 2.2 使用场景
  • 3. OFFSET:跳过前几行
    • 3.1 示意图
    • 3.2 使用场景
  • 4. WHERE子句:精细控制数据过滤
    • 4.1 示意图
    • 4.2 运算符详细说明
    • 4.3 基本条件示例
    • 4.4 复杂条件示例
  • 5. HAVING子句:对分组结果进行过滤
    • 5.1 示意图
    • 5.2 基本语法
    • 5.3 各部分解释
  • 6. 数据筛选示意图
  • 总结

在现代数据驱动的世界中,数据分析和管理已成为企业成功的重要组成部分。SQL(结构化查询语言)作为最常用的数据库查询语言之一,帮助用户从庞大的数据集中提取出有价值的信息。本文将详细介绍SQL中的数据筛选与限制工具,包括 DISTINCTLIMITOFFSETWHERE 子句以及 HAVING 子句,并结合丰富的示例和注释,帮助读者更深入地理解这些工具的使用。

CSDN @ 2136
数据筛选与限制
DISTINCT
LIMIT
WHERE子句
HAVING子句
OFFSET
消除重复
控制结果数量
复杂条件筛选
对分组数据进行过滤
跳过记录数量
CSDN @ 2136

1. DISTINCT:避免重复记录

当我们需要从数据库中获取唯一的值时,DISTINCT关键字是非常有效的工具。它能确保返回结果中没有重复项,从而节省存储和提高查询效率。

  • 功能: DISTINCT 关键字用于返回唯一的值,避免重复的数据。它通常与 SELECT 语句一起使用。

  • 描述: 在查询中使用 DISTINCT 可以有效减少结果集的冗余信息,尤其在处理包含重复数据的列时,这个工具显得尤为重要。

示例:

SELECT DISTINCT department_id FROM employees;

该查询将返回员工表中不同的部门ID。

1.1 示意图

所有部门ID
去重
唯一部门ID

注释: 使用 DISTINCT 时,需要注意它会影响查询的效率,因为数据库需要执行额外的计算来去除重复值。

示例:查询所有不同的部门ID

SELECT DISTINCT department_id 
FROM employees;

在这个示例中,我们从 employees 表中提取所有独特的 department_id。如果某个部门有多个员工,这个查询只会返回该部门ID一次。

1.2 使用场景

  • 数据清理:在分析数据时,使用 DISTINCT 可以帮助识别和消除重复值。
  • 数据汇总:当需要创建报表或进行进一步分析时,确保数据的唯一性至关重要。

2. LIMIT:控制查询结果的数量

当处理大数据集时,直接查询所有数据往往不切实际。LIMIT 关键字可帮助我们指定返回结果的数量,从而优化查询性能。

  • 功能: LIMIT 子句用于限制查询结果返回的行数,通常用于分页显示或只获取部分数据。

  • 描述: 在处理大量数据时,使用 LIMIT 可以控制结果集的大小,以提高查询性能和用户体验。

示例:

SELECT * FROM employees ORDER BY salary DESC LIMIT 10;

此查询将返回薪资最高的前10名员工。

2.1 示意图

所有员工
按薪资排序
取前10名

注释: LIMIT 的使用尤其适合于需要展示部分数据的应用场景,如网站的员工列表、产品展示等。

查询前10名工资最高的员工

SELECT * 
FROM employees 
ORDER BY salary DESC 
LIMIT 10;

该查询将按工资降序排列,并仅返回工资最高的前10名员工的信息。这在生成报告或查看特定数据时非常有用。

2.2 使用场景

  • 分页显示:在网页应用中,通常需要将查询结果分为多页展示,LIMIT 可以帮助实现这一功能。
  • 性能优化:对于大型数据集,通过限制返回行数,减轻了数据库负担,提高响应速度。

3. OFFSET:跳过前几行

在处理分页查询时,OFFSET 关键字可以与 LIMIT 配合使用,以跳过指定数量的行。这样可以方便地获取特定页的数据。

  • 功能: OFFSET 子句用于跳过指定数量的行,通常与 LIMIT 一起使用,以实现分页效果。

  • 描述: 当需要从特定位置开始获取数据时,OFFSET 是一个非常有用的工具。例如,在一个包含多页数据的用户界面中,可以利用 OFFSET 来控制当前显示的页码。

示例:

SELECT * FROM employees ORDER BY salary DESC LIMIT 10 OFFSET 10;

该查询将跳过前10名薪资最高的员工,返回第11到20名的员工。

3.1 示意图

所有员工
按薪资排序
跳过前10名
取第11到20名

注释: OFFSET 的使用可以结合用户输入的页码,动态地加载数据,提高用户体验。

示例:查询第11到第20名工资最高的员工

SELECT * 
FROM employees 
ORDER BY salary DESC 
LIMIT 10 OFFSET 10;

这个查询将返回工资排名第11到第20的员工信息。

3.2 使用场景

  • 分页查询:在网页应用中,结合 LIMITOFFSET 可以实现用户友好的分页显示。
  • 数据分析:对大数据集进行分段处理时,OFFSET 可以帮助逐步检索数据。

4. WHERE子句:精细控制数据过滤

WHERE 子句是SQL中非常重要的部分,它允许用户对查询结果进行条件过滤,以确保只获取符合特定标准的数据。WHERE 支持多种运算符,可以构建复杂的查询条件。

  • 功能: WHERE 子句用于对查询结果进行条件过滤,确保返回符合特定条件的记录。

  • 描述: 通过 WHERE 子句,用户可以精确地控制查询,允许在数据中进行复杂的条件判断。

示例:

SELECT * FROM employees WHERE salary > 50000;

该查询将返回薪资高于50,000的所有员工记录。

4.1 示意图

所有员工
应用条件
符合条件的员工

注释: WHERE 子句可以与多种条件(如逻辑运算符 AND、OR 等)结合使用,实现复合条件查询。

4.2 运算符详细说明

运算符描述
=等于
!=<>不等于
>大于
<小于
>=大于等于
<=小于等于
LIKE模糊匹配
IN指定多个可能的值
BETWEEN范围
AND组合多个条件
OR满足任一条件

4.3 基本条件示例

示例:查询工资高于70000的员工

SELECT * 
FROM employees 
WHERE salary > 70000;

这个简单的条件可以快速筛选出高薪员工,为管理层做决策提供数据支持。

示例:查询姓氏以"Li"开头的员工

SELECT * 
FROM employees 
WHERE name LIKE 'Li%';

这个查询会找出所有姓名以“Li”开头的员工。

4.4 复杂条件示例

结合多个条件可以更精细地控制查询结果。例如:

示例:查询在“Sales”部门且工资高于50000的员工

SELECT * 
FROM employees 
WHERE department = 'Sales' AND salary > 50000;

此查询将返回所有“Sales”部门且工资高于50000的员工信息。

示例:查询工资在50000到100000之间的员工

SELECT * 
FROM employees 
WHERE salary BETWEEN 50000 AND 100000;

此查询将返回所有工资在50000到100000之间的员工信息。

这种方式能够帮助我们获得特定条件下的数据,便于更深入的分析。

5. HAVING子句:对分组结果进行过滤

HAVING 子句通常与 GROUP BY 一起使用,用于对聚合后的结果集进行过滤。这使得我们可以在数据分组后仍然应用条件筛选。

  • 功能: HAVING 子句用于对分组结果进行过滤,通常与 GROUP BY 子句一起使用。

  • 描述: 与 WHERE 不同,HAVING 处理的是聚合后的数据,因此它在分组查询中是不可或缺的部分。

示例:

SELECT department, AVG(salary) AS avg_salary 
FROM employees 
GROUP BY department 
HAVING AVG(salary) > 60000;

此查询将返回平均薪资高于60,000的部门及其平均薪资。

5.1 示意图

分组结果
计算平均工资
过滤平均工资 > 60000

注释: HAVING 子句的使用通常出现在分析性报告中,能够帮助决策者快速识别出表现优秀的部门或其他分组数据。

5.2 基本语法

SELECT column1, AGGREGATE_FUNCTION(column2) 
FROM table_name 
WHERE condition 
GROUP BY column1 
HAVING aggregate_condition;

5.3 各部分解释

  • SELECT column1, AGGREGATE_FUNCTION(column2): 查询指定列并计算聚合值。
  • FROM table_name: 指定查询的数据表。
  • WHERE condition: 在数据分组之前筛选行,不允许使用聚合函数。
  • GROUP BY column1: 按 column1 分组,每个组生成一行输出。
  • HAVING aggregate_condition: 对已分组数据进行过滤,支持聚合条件。

示例:查询每个部门的平均工资,并仅返回平均工资超过60000的部门

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;

在这个示例中,我们首先按部门分组,然后计算每个部门的平均工资,最后只返回平均工资超过60000的部门。这种方法在分析各部门的财务健康状况时非常有用。

6. 数据筛选示意图

DISTINCT
LIMIT
OFFSET
WHERE
分组
CSDN @ 2136
开始
选择数据
返回唯一值
限制结果条数
跳过前几行
应用条件
复杂条件
HAVING
结束
CSDN @ 2136

总结

通过上述内容,我们可以看到SQL在数据提取中的强大功能。掌握这些工具不仅能提高数据查询的效率,还能增强数据分析的深度和广度。希望这篇文章能帮助您更好地理解SQL的数据筛选与限制工具,从而在实际工作中有效利用它们。请继续关注我们的博客,获取更多实用的SQL技巧与最佳实践!


相关文章:

【SQL】掌握SQL查询技巧:数据筛选与限制

目录 1. DISTINCT&#xff1a;避免重复记录1.1 示意图1.2 使用场景 2. LIMIT&#xff1a;控制查询结果的数量2.1 示意图2.2 使用场景 3. OFFSET&#xff1a;跳过前几行3.1 示意图3.2 使用场景 4. WHERE子句&#xff1a;精细控制数据过滤4.1 示意图4.2 运算符详细说明4.3 基本条…...

大学生社团活动系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;社长管理&#xff0c;社团分类管理&#xff0c;社团信息管理&#xff0c;社团加入管理&#xff0c;社团活动管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页…...

codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!

复习比学习更重要&#xff0c;更需要投入时间&#xff0c;更需要花费精力 1.字符串的排列2.找出字符串中第一个匹配的下标3.最大连续1的个数II4.数组中的山脉5.移除元素6.两个数组的交集II7.有序数组的平方8.删除有序数组中的重复项II9.寻找重复数10.水果成篮 1.字符串的排列 …...

HarmonyOS应用六之应用程序进阶一

目录&#xff1a; 1、UIAbility的冷启动和UIAbility热启动2、静态资源和动态资源的访问3、页面跳转3.1、页面返回跳转 4、HAR的ArkUI组件、接口、资源&#xff0c;供其他应用或当前应用的其他模块引用4.1、导出HAR的ArkUI组件4.2、引用HAR的ArkUI组件 5、循环渲染6、状态管理最…...

vue开发中变量第一次双向绑定无效,界面并没有变化,第二次则又好了。

这个问题出现的太频繁了,基本大部分用户都遇到这个情况。大部分是弹框的情况。代码如下: <el-dialog:visible.sync="isShowCode" @close="closeCode()"><div class="u4259f"><edite-edite-code isNoShowClose="true"…...

C++基础(8)——string的相关面试题

目录 1.字符串转成整数 2.字符串相加 3.高精度加法模板&#xff08;acwing&#xff09; 4.验证回文串 1.字符串转成整数 题目&#xff1a;将一个字符串转换成一个整数&#xff0c;要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。输入的…...

【Docker】06-DockerCompose

1. Docker compose 2. Docker Compose部署项目 docker-compose.yml version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3307:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "/root/docker/mysql/…...

代码随想录训练营Day27 | 77. 组合 | 216.组合总和III | 17.电话号码的字母组合

学习文档&#xff1a;代码随想录 (programmercarl.com) 视频链接&#xff1a;代码随想录算法公开课 | 最强算法公开课 | 代码随想录 (programmercarl.com) Leetcode 77. 组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以…...

Linux文件重定向文件缓冲区

目录 一、C文件接口 二、系统文件I/O 2.1认识系统文件I/O 2.2系统文件I/O 2.3系统调用和库函数 2.4open( )的返回值--文件描述符 2.5访问文件的本质 三、文件重定向 3.1认识文件重定向 3.2文件重定向的本质 3.3在shell中添加重定向功能 3.4stdout和stderr 3.5如何理…...

训练贪吃蛇ai的后续记录

发现可以结合遗传算法的思路&#xff0c;产生更好的效果。 即每训练一段时间&#xff0c;就停下来测试一下新模型的效果。如果效果优于记录中最好的&#xff0c;则继续导入该模型并训练。重复几次&#xff0c;效果可能更好。 例如&#xff0c;昨晚我便通过唯一一个在十次测试中…...

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库&#xff0c;进行入门的增删改查等操作。擦&#xff0c;咋写着写着凌乱起来了。 SqlSugar官方文档&#xff1a;简单示例&#xff0c;1分钟入门 - SqlSugar 5x - .NET果糖网 2、环境SqlSugar V5.0版本需要.Net Framework 4.6 &#xff0…...

代数结构基础 - 离散数学系列(八)

目录 1. 群&#xff08;Group&#xff09; 群的定义 群的示例 2. 环&#xff08;Ring&#xff09; 环的定义 环的示例 3. 域&#xff08;Field&#xff09; 域的定义 域的示例 域在密码学中的应用 4. 实际应用场景 1. 对称性与加密 2. 误差检测与纠正 3. 数据编码…...

函数的arguments为什么不是数组?如何转化为数组?

因为arguments本身并不能调用数组方法&#xff0c;它是一个另外一种对象类型&#xff0c;只不过属性从0开始排&#xff0c;依次为0 1 2…最后还有callee和length属性&#xff0c;我们也把这样的对象成为类数组。 常见的类数组还有&#xff1a; 1.用getElementsByTagName/Class…...

Java之反射

目录 反射 定义 主要用途 反射相关的类 Class类中【获得类相关方法】 Class类中【获得类中属性相关的方法】 Class类中【获得类中注解相关的方法】 Class类中【获得类中构造器相关的方法】 Class类中【获得类中方法相关的方法】 获得Class对象 代码示例1 代码示例…...

3dsMax添加天空盒

点击渲染&#xff0c;环境 &#xff0c; 点击位图 找到要设置的天空HDR&#xff0c;可以使用HDR(EXR)贴图 一个可以下载HDR贴图的网站 https://polyhaven.com/hdris在渲染的时候不要使用使用微软输入法&#xff0c;3dsmax会卡死&#xff0c; 在渲染的时候不要使用使用微软…...

C语言的类型提升机制

概念 在C语言中&#xff0c;整数类型按照其大小可以分为以下几类&#xff08;从小到大&#xff09;&#xff1a; charshortintlonglong long 当在表达式中涉及这些类型的混合运算时&#xff0c;较小的类型会被提升为较大的类型。具体规则如下&#xff1a; ①char 和 short …...

Pandas和Seaborn数据可视化

Pandas数据可视化 学习目标 本章内容不需要理解和记忆&#xff0c;重在【查表】&#xff01; 知道数据可视化的重要性和必要性知道如何使用Matplotlib的常用图表API能够找到Seaborn的绘图API 1 Pandas数据可视化 一图胜千言&#xff0c;人是一个视觉敏感的动物&#xff0c;大…...

爬虫(Python版本)

1.爬虫的法律问题 爬虫技术&#xff08;Web Scraping&#xff09;指通过程序自动访问网页并提取其中的数据。在使用爬虫的过程中&#xff0c;涉及到一些法律法规和合规性问题。 常见法律风险 ①未经授权的访问&#xff1a;很多网站对爬虫行为设置了限制。如果未获得授权就进行…...

【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数

VS Code Debug技巧&#xff1a;launch.json实用参数 在使用Visual Studio Code (VS Code)进行调试时&#xff0c;launch.json文件是一个强大的工具&#xff0c;它允许你自定义调试会话。以下是一些实用的参数&#xff0c;可以帮助你更有效地调试Python代码。 1. 调试第三方库…...

pycharm连接linux服务器需要提前安装ssh服务

在 Debian 或 Ubuntu 系统上&#xff0c;使用 APT&#xff1a; bash复制代码 sudo apt-get install openssh-server 在基于 RPM 的系统如 CentOS 或 RHEL 上&#xff0c;使用 YUM 或 DNF&#xff1a; bash复制代码 sudo yum install openssh-server 或对于较新的 RHEL/Cent…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...

MLP实战二:MLP 实现图像数字多分类

任务 实战&#xff08;二&#xff09;&#xff1a;MLP 实现图像多分类 基于 mnist 数据集&#xff0c;建立 mlp 模型&#xff0c;实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入&#xff0c;可视化图形数字&#xff1b; 2、完成数据预处理&#xff1a;图像数据维度转换与…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...