第 3 章 SQL 语言核心


第 3 章 · SQL 语言核心

章节摘要:表设计定稿后,日常与数据库打交道的媒介就是 SQL。本章按"建(DDL)、写(DML)、查(DQL)、管(事务与权限)、连(JOIN 与子查询)"五条线组织,每条线都配评审会真实语句案例。目标不是罗列语法——语法手册随处可查——而是建立"每条语句背后发生了什么"的工程直觉,这份直觉是第 5 章性能优化的入场券。

学习目标

阅读完本章,你应当能够:

  1. 区分 DDL 与 DML 在锁与事务行为上的本质差异,判断哪些 ALTER 能在线执行、哪些必须走低峰窗口;
  2. 写出覆盖增删改的基础 DML,理解批量插入与逐条插入的性能差距来源;
  3. 按"SELECT 的逻辑执行顺序"拆解复杂查询,不再被 WHERE 与 HAVING 的区别绕晕;
  4. 用 COMMIT、ROLLBACK 与 SAVEPOINT 组合出正确的多步骤写入流程;
  5. 掌握 GRANT 最小授权模型,说出为什么日常开发不该用 root;
  6. 面对一个 JOIN 需求,正确选择内连、左连或 EXISTS 写法,并预判子查询的执行方式。

核心概念速览

SQL 的四个子语言家族对应数据库的四种角色分工:结构由 DDL 管,数据由 DML 管,读取由 DQL 管,安全与一致性由 TCL 和 DCL 管。评审会上讨论语句合规性时,第一件事就是确认"这条语句属于哪个家族、动了哪个层面"。

金句:一条 SQL 的好坏,语法层面看是否正确,工程层面看它让数据库做了多少无用功。

子章节导航

3.1 数据定义语言 DDL:CREATE、ALTER、DROP 三兄弟。重点讲 MySQL 8.0 的在线 DDL 能力边界——哪些改表动作是秒级的,哪些会重建整表,以及大表改结构的标准操作流程。

3.2 数据操作与查询:DML 三件套加 DQL 的完整语义,包括批量插入的 VALUES 多行写法、UPDATE 的安全模式、SELECT 逻辑执行顺序,以及常用函数的速查表。

3.3 事务控制与权限:COMMIT/ROLLBACK/SAVEPOINT 的组合拳,autocommit 对事务边界的影响;GRANT 的最小授权模型与角色管理。

3.4 JOIN 与子查询:内连、左连、右连的语义差异与笛卡尔积陷阱;子查询的两种执行方式(相关与非相关),以及何时应改写为 JOIN。

子章节之间的逻辑关系

四节按"结构 → 数据 → 控制 → 关联"递进。3.1 建立结构是前提;3.2 往结构里读写数据;3.3 保证多步操作的整体性与访问安全;3.4 处理跨表取数的复杂性——它直接消费第 2 章的表关系设计,也为第 5 章 JOIN 优化埋下伏笔。

+-------------------+ | 3.1 DDL 结构定义 | +---------+---------+ v +-------------------+ 包裹事务、受权限约束 | 3.2 DML 与 DQL | <-------------------------+ +---------+---------+ | v 跨表取数 | +-------------------+ +--------+----------+ | 3.4 JOIN 与子查询 | --------------> | 3.3 事务与权限 | +-------------------+ 原子性要求 +-------------------+ ​

前置知识与后续延伸

本章默认你已熟悉第 2 章产出的订单系统表结构(customer、orders、order_item、product),所有演练都在这套表上展开。学完本章后,第 4 章索引设计的所有"查询模式"都从这些语句里来——先写过 JOIN,才懂为什么要给外键建索引;先见过 ORDER BY,才明白排序为什么要索引托底。SQL 是设计与优化之间的桥,桥这头是你写的表,桥那头是数据库的执行引擎。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U