SQL

一、SQL的理论基础

1.1 关系数据模型(Relational Model)

SQL建立在关系数据模型之上。关系模型由三部分组成:

(1)数据结构

(2)数据操作

关系代数运算:

运算含义
选择行过滤
投影列选择
连接表组合
集合合并
集合差
笛卡尔积全组合
聚合汇总计算

(3)完整性约束


1.2 SQL的本质

SQL是:

关系代数的声明式表达语言

用户描述:

✔ 要什么数据✘ 不描述怎么取

执行方式由查询优化器决定。


1.3 SQL与关系代数映射

SQL结构关系代数语义
SELECT投影
WHERE选择
JOIN连接
GROUP BY分组
HAVING分组过滤
UNION
INTERSECT
EXCEPT
VIEW虚关系

二、SQL查询语义模型

2.1 查询逻辑执行顺序

SQL书写顺序 ≠ 执行顺序

逻辑执行流程:

FROMJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT

这是理解:

的基础。


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 可更新视图条件

必须保持与单一基表可映射。


关联内容(自动生成)