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

SQL 查询详细指南

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

1. DISTINCT 去重

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

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

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

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

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

sql 复制代码
SELECT COALESCE(column1, 'default_value') FROM table_name;

在 Oracle 中可以使用:

sql 复制代码
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 实现。

    示例:

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

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

    示例:

    sql 复制代码
    SELECT column1, column2 FROM table1
    UNION
    SELECT column1, column2 FROM table2;
注意

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

相关推荐
Dxy12393102161 分钟前
MySQL删除表语句详解
数据库·mysql
uoKent10 分钟前
MySQL常见命令梳理大纲
数据库·mysql
予枫的编程笔记15 分钟前
【MySQL筑基篇】从排名统计到非结构化存储:MySQL窗口函数与JSON实战教程
mysql·数据处理·窗口函数·后端开发·json数据类型·数据库进阶·mysql高级特性
晚霞的不甘22 分钟前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
2301_7657031424 分钟前
工具、测试与部署
jvm·数据库·python
BYSJMG29 分钟前
计算机毕设选题推荐:基于大数据的癌症数据分析与可视化系统
大数据·vue.js·python·数据挖掘·数据分析·课程设计
山岚的运维笔记30 分钟前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver
创客小邓36 分钟前
Qt对SQLite数据库的操作
数据库·qt·sqlite
petrel20151 小时前
【Spark 核心内参】2026.1:JIRA vs GitHub Issues 治理模式大讨论与 4.2.0 预览版首发
大数据·spark
闻哥1 小时前
深入理解 ES 词库与 Lucene 倒排索引底层实现
java·大数据·jvm·elasticsearch·面试·springboot·lucene