SQL
一、SQL的理论基础
1.1 关系数据模型(Relational Model)
SQL建立在关系数据模型之上。关系模型由三部分组成:
(1)数据结构
- **关系(Relation)**:二维表
- **属性(Attribute)**:列
- **元组(Tuple)**:行
- **域(Domain)**:属性取值范围
(2)数据操作
关系代数运算:
| 运算 |
含义 |
| 选择 |
行过滤 |
| 投影 |
列选择 |
| 连接 |
表组合 |
| 并 |
集合合并 |
| 差 |
集合差 |
| 笛卡尔积 |
全组合 |
| 聚合 |
汇总计算 |
(3)完整性约束
- 实体完整性(主键)
- 参照完整性(外键)
- 用户定义约束
1.2 SQL的本质
SQL是:
关系代数的声明式表达语言
用户描述:
✔ 要什么数据
✘ 不描述怎么取
执行方式由查询优化器决定。
1.3 SQL与关系代数映射
| SQL结构 |
关系代数语义 |
| SELECT |
投影 |
| WHERE |
选择 |
| JOIN |
连接 |
| GROUP BY |
分组 |
| HAVING |
分组过滤 |
| UNION |
并 |
| INTERSECT |
交 |
| EXCEPT |
差 |
| VIEW |
虚关系 |
二、SQL查询语义模型
2.1 查询逻辑执行顺序
SQL书写顺序 ≠ 执行顺序
逻辑执行流程:
FROM
JOIN
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
ORDER BY
LIMIT
这是理解:
的基础。
2.2 查询执行机制(工程层)
数据库内部执行:
SQL解析
语义分析
查询重写
执行计划生成
代价估计
算子执行
结果返回
关键组件:
2.3 常见连接算法
| 算法 |
特点 |
| Nested Loop |
简单,适合小表 |
| Hash Join |
等值连接,高效 |
| Merge Join |
有序数据 |
三、SQL数据结构定义(DDL)
3.1 类型系统
数值
字符
时间
大对象
3.2 表结构
表 = 关系实例。
定义要素:
3.3 完整性约束体系
实体完整性
主键唯一且非空。
参照完整性
外键必须引用存在值。
域约束
值范围限制。
用户约束
自定义规则。
3.4 模式与命名空间
三层结构:
目录(数据库实例)
└ 模式(schema)
└ 表 / 视图 / 对象
四、关系查询表达(SELECT)
查询本质:
对关系进行运算得到新关系
4.1 投影(列选择)
选择需要的属性。
4.2 选择(行过滤)
条件谓词过滤元组。
4.3 连接(关系组合)
内连接
匹配行。
外连接
保留未匹配行。
自连接
同一关系多角色。
自然连接
按同名属性匹配。
4.4 分组与聚合
聚合函数:
规则:
非聚合列必须参与分组。
4.5 子查询
标量子查询
返回单值。
行子查询
返回单行。
表子查询
返回关系。
相关子查询
依赖外层查询。
4.6 集合运算
关系满足集合语义:
五、数据修改语言(DML)
5.1 插入
生成新元组。
5.2 更新
修改属性值。
5.3 删除
移除元组。
六、数据抽象层(视图)
视图是:
虚关系(逻辑表)
作用:
6.1 视图类型
普通视图
实时计算。
物化视图
持久化结果。
6.2 可更新视图条件
必须保持与单一基表可映射。
关联内容(自动生成)
- [/中间件/数据库/数据库.html](/中间件/数据库/数据库.html) SQL 建立在关系数据库理论之上,该文档提供数据库领域的总体概述与核心概念
- [/中间件/数据库/数据库系统/数据库设计.html](/中间件/数据库/数据库系统/数据库设计.html) SQL DDL 涵盖表结构设计与完整性约束,与数据库设计原则密切相关
- [/中间件/数据库/索引.html](/中间件/数据库/索引.html) SQL 查询执行机制中索引选择是核心优化手段,直接影响查询性能
- [/中间件/数据库/数据库系统/事务管理/事务.html](/中间件/数据库/数据库系统/事务管理/事务.html) SQL DML 操作涉及事务管理与 ACID 语义保障
- [/中间件/数据库/mysql/查询优化.html](/中间件/数据库/mysql/查询优化.html) SQL 查询优化器与执行计划的具体实现与调优实践
- [/中间件/数据库/mysql/存储引擎.html](/中间件/数据库/mysql/存储引擎.html) SQL 查询执行底层依赖存储引擎提供数据读写能力
- [/中间件/数据库/数据类型.html](/中间件/数据库/数据类型.html) SQL 类型系统(DDL)与数据库数据类型体系直接对应
- [/中间件/数据库/mysql/mysql.html](/中间件/数据库/mysql/mysql.html) MySQL 是 SQL 标准最广泛的实现,涵盖 SQL 特性的具体行为与扩展
- [/中间件/数据库/mysql/schema与数据类型优化.html](/中间件/数据库/mysql/schema与数据类型优化.html) SQL 表结构定义(DDL)与数据类型选择的最佳实践
- [/编程语言/JAVA/框架/ORM.html](/编程语言/JAVA/框架/ORM.html) ORM 是 SQL 关系模型与对象模型之间的抽象桥接层
- [/软件工程/架构模式/对象关系模式.html](/软件工程/架构模式/对象关系模式.html) 对象关系映射模式揭示了 SQL 关系模型在应用层的抽象方式
- [/数据技术/数据存储.html](/数据技术/数据存储.html) SQL 关系模型本质上是对数据存储与检索的高层抽象
- [/中间件/数据库/分布式数据库.html](/中间件/数据库/分布式数据库.html) 分布式数据库对 SQL 语义的扩展(跨节点事务、分布式查询)与限制