news 2026/9/3 14:49:01

SQL 核心常用语法笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 核心常用语法笔记

SQL 核心常用语法笔记

以下内容以MySQL为例。SQL 是一门操作关系型数据库的语言,MySQL 实现了 SQL,并在标准 SQL 基础上增加了一些自己的语法。


一、SQL 语句的主要分类

分类常见语句用途
查询数据SELECT查询数据库中的数据
新增数据INSERT插入记录
修改数据UPDATE修改已有记录
删除数据DELETE删除记录
定义表结构CREATEALTERDROP创建、修改、删除表
事务控制START TRANSACTIONCOMMITROLLBACK控制一组操作是否整体提交
权限控制GRANTREVOKE管理数据库权限

日常数据查询和 BI 分析中,最常用的是SELECT


二、SELECT 查询的基本结构

一个比较完整的查询结构如下:

SELECT字段或计算表达式FROM表名JOIN其他表ON关联条件WHERE明细过滤条件GROUPBY分组字段HAVING分组后的过滤条件ORDERBY排序字段LIMIT返回数量;

例如:

SELECTstatus,COUNT(*)ASchat_countFROMagent_chat_runsWHEREstarted_at>='2026-08-01'GROUPBYstatusHAVINGCOUNT(*)>10ORDERBYchat_countDESCLIMIT20;

它的含义是:

  1. 查询2026-08-01之后的数据;
  2. status分组;
  3. 统计每种状态的记录数;
  4. 只保留记录数大于 10 的状态;
  5. 按数量从大到小排序;
  6. 最多返回 20 行。

执行顺序

当前 SQL 是书写顺序

SELECT字段或计算表达式FROM表名JOIN其他表ON关联条件WHERE明细过滤条件GROUPBY分组字段HAVING分组后的过滤条件ORDERBY排序字段LIMIT返回数量;

但 SQL 的逻辑执行顺序通常是:

1. FROM 2. JOIN / ON 3. WHERE 4. GROUP BY 5. 聚合计算 6. HAVING 7. SELECT 8. DISTINCT 9. ORDER BY 10. LIMIT

各阶段含义:

顺序语法作用
1FROM确定从哪张表读取数据
2JOIN / ON关联其他表,并确定关联条件
3WHERE过滤原始明细记录
4GROUP BY将过滤后的记录分组
5COUNT/SUM/AVG计算每个分组的聚合结果
6HAVING过滤分组后的结果
7SELECT选择最终返回的字段和表达式
8DISTINCT对最终结果去重
9ORDER BY对结果排序
10LIMIT限制最终返回行数

例如:

SELECTapp_code,COUNT(*)ASchat_countFROMagent_chat_runsWHEREstatus<>'running'GROUPBYapp_codeHAVINGCOUNT(*)>=10ORDERBYchat_countDESCLIMIT20;

执行过程是:

读取 agent_chat_runs → 排除 running 记录 → 按 app_code 分组 → 计算每组的 COUNT(*) → 保留数量不少于10的分组 → 返回 app_code 和 chat_count → 按 chat_count 降序排列 → 最多返回20行

这也解释了为什么:

  • WHERE一般不能使用聚合函数,因为此时还没有完成分组。
  • 聚合结果需要使用HAVING过滤。
  • ORDER BY可以使用SELECT中定义的chat_count别名,因为排序发生在SELECT之后。

这是逻辑执行顺序;数据库实际执行时,优化器可能调整底层执行方式,但查询结果应符合这个逻辑。


三、SELECT:查询字段

1. 查询全部字段

SELECT*FROMagent_chat_runs;

*表示查询表中的所有字段。

实际生产查询中一般不建议长期使用SELECT *,因为可能查询很多不需要的数据。

2. 查询指定字段

SELECTagent_chat_id,session_id,status,started_atFROMagent_chat_runs;

3. 给字段设置别名

SELECTagent_chat_idASchat_id,duration_msASexecution_durationFROMagent_chat_runs;

AS表示为查询结果设置别名,不会修改数据库原字段名。

4. 查询计算结果

SELECTduration_ms/1000.0ASduration_secondsFROMagent_chat_runs;

这里会把毫秒转换为秒。


四、WHERE:过滤明细数据

WHERE用于在查询、分组和聚合之前过滤记录。

1. 比较运算符

运算符含义
=等于
!=<>不等于
>大于
>=大于等于
<小于
<=小于等于

例如:

SELECT*FROMagent_chat_runsWHEREstatus='failed';

查询耗时超过 5 分钟的记录:

SELECT*FROMagent_chat_runsWHEREduration_ms>5*60*1000;

2. AND、OR、NOT

同时满足多个条件

SELECT*FROMagent_chat_runsWHEREstatus='success'ANDduration_ms>60000;

满足其中任意条件

SELECT*FROMagent_chat_runsWHEREstatus='failed'ORstatus='cancelled';

排除某个条件

SELECT*FROMagent_chat_runsWHERENOTstatus='failed';

复杂条件建议添加括号:

SELECT*FROMagent_chat_runsWHEREapp_code=10001AND(status='failed'ORstatus='cancelled');

五、IN、BETWEEN、LIKE

1. IN:匹配多个值

SELECT*FROMagent_chat_runsWHEREstatusIN('success','failed','cancelled
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 14:48:46

Linux内核无线网卡驱动移植实战:RTL8812au适配新内核

简介&#xff1a;Linux内核模块开发是深入理解操作系统与硬件交互的关键技术领域&#xff0c;其核心在于通过驱动程序实现硬件设备与内核的无缝对接。驱动移植作为内核开发的重要实践&#xff0c;本质是让为旧版本内核编写的代码适应新内核的API与数据结构变更&#xff0c;这要…

作者头像 李华
网站建设 2026/9/2 9:34:27

我的bash驱动函数终于修好了

以前那个人的VPM软件因为他不支持ubuntu了&#xff0c;所以现在只好自己用服务器来上外网&#xff0c;因为其他vpm虽然免费&#xff0c;但是ubuntu上面大多数用不了-----------现在好了&#xff1a;现在我的电脑终于是能基本正常使用VPM了。------无论是浏览器&#xff0c;还是…

作者头像 李华
网站建设 2026/9/2 9:35:48

Whale框架:揭秘万亿参数大模型分布式训练的核心技术与工程实践

1. 项目概述&#xff1a;从“大”到“智”的工程挑战 最近几年&#xff0c;AI领域最激动人心的进展莫过于大模型。从GPT-3到各种“千亿”、“万亿”参数的模型&#xff0c;它们展现出的理解和生成能力让人惊叹。但作为一名长期混迹于分布式系统和机器学习工程一线的从业者&…

作者头像 李华
网站建设 2026/9/1 12:22:33

Emacs 包升级供应链卫生:用 LLM 构建升级前风险检查流水线

在 Emacs 的日常维护里&#xff0c;“升级包”这个动作看起来只有一行命令&#xff1a;package-list-packages里按U&#xff0c;再按x&#xff0c;或者直接执行package-upgrade-all。但真正动手之前&#xff0c;很少有人意识到自己正在做一次供应链决策&#xff1a;你即将把本机…

作者头像 李华
网站建设 2026/8/31 9:09:07

每日资讯快报:Cursor 被 SpaceX 收购,OpenAI 直接断供模型~

今天 AI 圈最炸的只有一条&#xff1a;Cursor 被 SpaceX 收购&#xff0c;OpenAI 直接断供模型。往下还有 GitHub AI 热榜和 DeepSeek harness 插件生态的新动静&#xff0c;三分钟扫完。 【今日 AI 快报】 Cursor 被收购&#xff0c;OpenAI 断供模型&#xff1a;SpaceX 以 60…

作者头像 李华
网站建设 2026/8/31 9:08:27

MATLAB数学建模入门:从零搭建工作流与核心技能

1. 项目概述&#xff1a;为什么是MATLAB&#xff1f; 如果你正在读这篇文章&#xff0c;大概率是刚接到一个数学建模竞赛的任务&#xff0c;或者是一门课程的大作业&#xff0c;正对着“MATLAB”这个软件感到既熟悉又陌生。熟悉&#xff0c;是因为这个名字在理工科领域如雷贯耳…

作者头像 李华