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

经典sql题(八)SQL 查询详细指南总结一

SQL 查询详细指南

SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言。本文将详细介绍 SQL 中的一些常见操作及其用法,包括 DISTINCT 去重、LIMIT 限制、排序、开窗函数、NULL 值替换、JOIN 与 UNION 等。

1. DISTINCT 去重

当从数据库中查询数据时,可能会遇到重复的行。DISTINCT 关键字用于去除结果中的重复行。

SELECT DISTINCT column1, column2 FROM table_name;
2. LIMIT 限制返回行数

LIMIT 子句用于限制返回的行数。例如,返回前 5 行:

SELECT column1, column2 FROM table_name LIMIT 5;
3. 排序与开窗函数
  • ORDER BY:用于对结果集进行排序。可以按升序(ASC)或降序(DESC)排列。
SELECT column1, column2 FROM table_name ORDER BY column1 ASC;
  • 开窗函数:提供对行集的分析能力。ROW_NUMBER() 是常用的开窗函数。
SELECT column1, column2, ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2 DESC) AS row_num
FROM table_name;
4. NULL 值处理

使用 COALESCENVL 函数(在 Oracle 中)处理 NULL 值:

SELECT COALESCE(column1, 'default_value') FROM table_name;

在 Oracle 中可以使用:

SELECT NVL(column1, 'default_value') FROM table_name;
5. SQL 执行顺序

SQL 查询的执行顺序通常如下:

  1. FROM:确定数据来源。
  2. WHERE:过滤行。
  3. GROUP BY:对结果进行分组。
  4. HAVING:对分组结果进行过滤。
  5. SELECT:选择返回的列。
  6. ORDER BY:对结果进行排序。
6. 联接 (JOIN) 与 UNION

在 SQL 中,JOINUNION 用于不同的目的:

  • JOIN:从多个表中获取相关数据,通过匹配条件合并表,将结果集左右叠加。

    • INNER JOIN:返回两个表中匹配的行。
    • LEFT JOIN:返回左表中的所有行,即使右表中没有匹配的行。
    • RIGHT JOIN:返回右表中的所有行,即使左表中没有匹配的行。
    • FULL JOIN:返回两个表中的所有行,MySQL 不直接支持 FULL JOIN,通常可以通过 UNION 实现。

    示例:

    SELECT a.column1, b.column2
    FROM table1 a
    LEFT JOIN table2 b ON a.common_field = b.common_field;
    
  • UNION:合并多个查询的结果,将结果集垂直叠加。

    • UNION:去除重复行。
    • UNION ALL:包括所有行,包含重复行。

    示例:

    SELECT column1, column2 FROM table1
    UNION
    SELECT column1, column2 FROM table2;
    
注意

在银行,金融数据处理中,LEFT JOIN 经常使用,以确保主要表(左表)的所有行都被保留,即使右表中没有匹配的记录。这样可避免数据丢失。

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

相关文章:

  • 用Python实现时间序列模型实战——Day 30: 学习总结与未来规划
  • ChatGPT居然主动勾引用户,OpenAI又测试新功能? 一文教你学会订阅
  • 基于SpringBoot+Vue的考研百科网站系统
  • 深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)
  • 麒麟银河桌面版,成功安装cuda12.6,mysql
  • CentOS 7 YUM源不可用
  • Java反序列化利用链篇 | URLDNS链
  • Android 短信验证码自动填充
  • 数据库 MySQL 是否需要容器化?
  • Kettle的安装及简单使用
  • Golang | Leetcode Golang题解之第420题强密码检验器
  • 面试金典题3
  • FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
  • Python使用总结之py-docx将word文件中的图片保存,并将内容返回
  • Radware 报告 Web DDoS 攻击活动
  • OpenCV运动分析和目标跟踪(2)累积操作函数accumulateSquare()的使用
  • PCIe进阶之TL:Common Packet Header Fields TLPs with Data Payloads Rules
  • Linux之实战命令01:xargs应用实例(三十五)
  • Redisson实现分布式锁(看门狗机制)
  • 记录一次显卡驱动安装
  • nginx的作用是什么
  • 【全网最全】2024年华为杯研赛B题成品论文获取入口(后续会更新)
  • 计算机网络(八) —— Udp协议
  • 【Linux篇】TCP/IP协议(笔记)
  • std::pair和std::tuple
  • Access denied for user ‘root‘@‘114.254.154.110‘ (using password: YES)
  • 深度学习03-神经网络01-什么是神经网络?
  • Redisson 分布式锁的使用详解
  • 计算机网络:物理层 --- 基本概念、编码与调制
  • 使用Maven创建一个Java项目并在repository中使用