{"name":"SQL","id":"DSL-SQL","content":"# SQL\n\n## 一、SQL的理论基础\n\n### 1.1 关系数据模型（Relational Model）\n\nSQL建立在关系数据模型之上。关系模型由三部分组成：\n\n#### （1）数据结构\n\n* **关系（Relation）**：二维表\n* **属性（Attribute）**：列\n* **元组（Tuple）**：行\n* **域（Domain）**：属性取值范围\n\n#### （2）数据操作\n\n关系代数运算：\n\n| 运算   | 含义   |\n| ---- | ---- |\n| 选择   | 行过滤  |\n| 投影   | 列选择  |\n| 连接   | 表组合  |\n| 并    | 集合合并 |\n| 差    | 集合差  |\n| 笛卡尔积 | 全组合  |\n| 聚合   | 汇总计算 |\n\n#### （3）完整性约束\n\n* 实体完整性（主键）\n* 参照完整性（外键）\n* 用户定义约束\n\n---\n\n### 1.2 SQL的本质\n\nSQL是：\n\n> **关系代数的声明式表达语言**\n\n用户描述：\n\n✔ 要什么数据\n✘ 不描述怎么取\n\n执行方式由查询优化器决定。\n\n---\n\n### 1.3 SQL与关系代数映射\n\n| SQL结构     | 关系代数语义 |\n| --------- | ------ |\n| SELECT    | 投影     |\n| WHERE     | 选择     |\n| JOIN      | 连接     |\n| GROUP BY  | 分组     |\n| HAVING    | 分组过滤   |\n| UNION     | 并      |\n| INTERSECT | 交      |\n| EXCEPT    | 差      |\n| VIEW      | 虚关系    |\n\n---\n\n## 二、SQL查询语义模型\n\n### 2.1 查询逻辑执行顺序\n\nSQL书写顺序 ≠ 执行顺序\n\n逻辑执行流程：\n\n```\nFROM\nJOIN\nWHERE\nGROUP BY\nHAVING\nSELECT\nDISTINCT\nORDER BY\nLIMIT\n```\n\n这是理解：\n\n* 别名作用域\n* 聚合规则\n* 分组约束\n* 性能行为\n\n的基础。\n\n---\n\n### 2.2 查询执行机制（工程层）\n\n数据库内部执行：\n\n```\nSQL解析\n语义分析\n查询重写\n执行计划生成\n代价估计\n算子执行\n结果返回\n```\n\n关键组件：\n\n* 查询优化器\n* 索引选择\n* 连接算法\n* 执行算子树\n\n---\n\n### 2.3 常见连接算法\n\n| 算法          | 特点      |\n| ----------- | ------- |\n| Nested Loop | 简单，适合小表 |\n| Hash Join   | 等值连接，高效 |\n| Merge Join  | 有序数据    |\n\n---\n\n## 三、SQL数据结构定义（DDL）\n\n### 3.1 类型系统\n\n#### 数值\n\n* 整数\n* 定点数\n* 浮点数\n\n#### 字符\n\n* 定长字符串\n* 变长字符串\n\n#### 时间\n\n* DATE\n* TIME\n* TIMESTAMP\n\n#### 大对象\n\n* 二进制\n* 文本\n\n---\n\n### 3.2 表结构\n\n表 = 关系实例。\n\n定义要素：\n\n* 属性\n* 类型\n* 默认值\n* 约束\n\n---\n\n### 3.3 完整性约束体系\n\n#### 实体完整性\n\n主键唯一且非空。\n\n#### 参照完整性\n\n外键必须引用存在值。\n\n#### 域约束\n\n值范围限制。\n\n#### 用户约束\n\n自定义规则。\n\n---\n\n### 3.4 模式与命名空间\n\n三层结构：\n\n```\n目录（数据库实例）\n  └ 模式（schema）\n      └ 表 / 视图 / 对象\n```\n\n---\n\n## 四、关系查询表达（SELECT）\n\n查询本质：\n\n> 对关系进行运算得到新关系\n\n---\n\n### 4.1 投影（列选择）\n\n选择需要的属性。\n\n---\n\n### 4.2 选择（行过滤）\n\n条件谓词过滤元组。\n\n---\n\n### 4.3 连接（关系组合）\n\n#### 内连接\n\n匹配行。\n\n#### 外连接\n\n保留未匹配行。\n\n#### 自连接\n\n同一关系多角色。\n\n#### 自然连接\n\n按同名属性匹配。\n\n---\n\n### 4.4 分组与聚合\n\n聚合函数：\n\n* 计数\n* 求和\n* 平均\n* 最大\n* 最小\n\n规则：\n\n非聚合列必须参与分组。\n\n---\n\n### 4.5 子查询\n\n#### 标量子查询\n\n返回单值。\n\n#### 行子查询\n\n返回单行。\n\n#### 表子查询\n\n返回关系。\n\n#### 相关子查询\n\n依赖外层查询。\n\n---\n\n### 4.6 集合运算\n\n关系满足集合语义：\n\n* 并\n* 交\n* 差\n\n---\n\n## 五、数据修改语言（DML）\n\n### 5.1 插入\n\n生成新元组。\n\n### 5.2 更新\n\n修改属性值。\n\n### 5.3 删除\n\n移除元组。\n\n---\n\n## 六、数据抽象层（视图）\n\n视图是：\n\n> 虚关系（逻辑表）\n\n作用：\n\n* 封装查询\n* 隐藏结构\n* 权限控制\n* 逻辑分层\n\n---\n\n### 6.1 视图类型\n\n#### 普通视图\n\n实时计算。\n\n#### 物化视图\n\n持久化结果。\n\n---\n\n### 6.2 可更新视图条件\n\n必须保持与单一基表可映射。\n\n---\n\n## 关联内容（自动生成）\n\n- [/中间件/数据库/数据库.md](/中间件/数据库/数据库.md) SQL 建立在关系数据库理论之上，该文档提供数据库领域的总体概述与核心概念\n- [/中间件/数据库/数据库系统/数据库设计.md](/中间件/数据库/数据库系统/数据库设计.md) SQL DDL 涵盖表结构设计与完整性约束，与数据库设计原则密切相关\n- [/中间件/数据库/索引.md](/中间件/数据库/索引.md) SQL 查询执行机制中索引选择是核心优化手段，直接影响查询性能\n- [/中间件/数据库/数据库系统/事务管理/事务.md](/中间件/数据库/数据库系统/事务管理/事务.md) SQL DML 操作涉及事务管理与 ACID 语义保障\n- [/中间件/数据库/mysql/查询优化.md](/中间件/数据库/mysql/查询优化.md) SQL 查询优化器与执行计划的具体实现与调优实践\n- [/中间件/数据库/mysql/存储引擎.md](/中间件/数据库/mysql/存储引擎.md) SQL 查询执行底层依赖存储引擎提供数据读写能力\n- [/中间件/数据库/数据类型.md](/中间件/数据库/数据类型.md) SQL 类型系统（DDL）与数据库数据类型体系直接对应\n- [/中间件/数据库/mysql/mysql.md](/中间件/数据库/mysql/mysql.md) MySQL 是 SQL 标准最广泛的实现，涵盖 SQL 特性的具体行为与扩展\n- [/中间件/数据库/mysql/schema与数据类型优化.md](/中间件/数据库/mysql/schema与数据类型优化.md) SQL 表结构定义（DDL）与数据类型选择的最佳实践\n- [/编程语言/JAVA/框架/ORM.md](/编程语言/JAVA/框架/ORM.md) ORM 是 SQL 关系模型与对象模型之间的抽象桥接层\n- [/软件工程/架构模式/对象关系模式.md](/软件工程/架构模式/对象关系模式.md) 对象关系映射模式揭示了 SQL 关系模型在应用层的抽象方式\n- [/数据技术/数据存储.md](/数据技术/数据存储.md) SQL 关系模型本质上是对数据存储与检索的高层抽象\n- [/中间件/数据库/分布式数据库.md](/中间件/数据库/分布式数据库.md) 分布式数据库对 SQL 语义的扩展（跨节点事务、分布式查询）与限制\n","metadata":"tags: ['sql', '数据库', '查询语言', '数据库设计', '索引优化']","hasMoreCommit":true,"totalCommits":17,"commitList":[{"date":"2026-02-27T10:34:46+08:00","author":"MY","message":"docs(sql): 重构SQL文档结构并完善核心概念说明","hash":"beeaa97fa669d1ae6bd464bb42b806e961a2185e"},{"date":"2025-11-16T21:30:56+08:00","author":"MY","message":"docs: 统一并精简文档标签","hash":"21362e9d7aeb62e05364cd5e7f3a3c24d7e293c7"},{"date":"2025-11-06T16:05:53+08:00","author":"MY","message":"docs: 为多个文档添加标签元数据","hash":"dc09327da481a60e0d70a640956def97c47a6e7e"},{"date":"2021-02-26T15:26:56+08:00","author":"cjiping","message":"✏更新SQL","hash":"9953bf12b17f16bcd61c0117965a197419393e71"},{"date":"2021-02-25T18:53:27+08:00","author":"cjiping","message":"✏更新SQL","hash":"c6ca5f90754d2fe96339f3e4cbd3a8dd85181ab5"},{"date":"2021-02-24T17:54:17+08:00","author":"cjiping","message":"✏更新SQL","hash":"945faea6bc661a954adf949fa61f7c005538a20b"},{"date":"2021-02-24T11:59:57+08:00","author":"cjiping","message":"✏更新SQL","hash":"16df1e55dfaae811d49c7dff02f7fb851233980c"},{"date":"2021-02-23T18:05:18+08:00","author":"cjiping","message":"✏更新SQL","hash":"2d089c35cf3198de51d0737d13ad7cdd35826831"},{"date":"2021-02-22T17:22:27+08:00","author":"cjiping","message":"✏更新SQL","hash":"e6ab1f35d5c95e68dac2be5447824ad4b90911bd"},{"date":"2021-02-21T14:59:20+08:00","author":"MY","message":"✏更新SQL","hash":"d01748e3f9568c15fabf86e9565241f4e58588cc"}],"createTime":"2020-03-10T19:15:54+08:00"}