title: SQL与数据库设计
tags:
- module
- database
- sql
- design
- joplin
type: module
source_type: reconstructed
created: 2026-04-22
updated: 2026-04-22
---
SQL与数据库设计
[!abstract]
这一模块讨论“数据库怎么用、怎么设计”两个问题。SQL 负责对数据进行声明式操作,数据库设计负责让这些操作建立在合理结构上。
模块结论
- [[SQL]] 的价值在于声明式、面向集合和综合统一,而不是单纯“会写语句”。
- 视图、索引、存储过程、触发器分别在抽象、安全、性能和自动化规则上发挥作用。
- 数据库设计的关键不是画图本身,而是把业务对象和关系稳定地落成结构良好的模式。
一、SQL 的核心特点
- 综合统一:兼顾定义、操纵、控制等多种功能。
- 高度非过程化:重点描述“要什么”,不是“怎么一步步做”。
- 面向集合:一次操作一组元组,而不是默认逐行处理。
常见分类
- DDL:定义数据库对象,如
CREATE、ALTER、DROP。
- DML:插入、更新、删除数据。
- DQL:查询数据。
- DCL:授权、回收权限。
二、SQL 查询思维
- 先明确数据来自哪些表。
- 再明确筛选条件、连接条件和需要输出的列。
- 最后判断是否需要分组、聚合、排序、嵌套。
高频查询类型
- 单表筛选
- 多表连接
- 分组聚合
- 嵌套查询
- 全称查询和存在性查询
易错点
- 把连接条件写成筛选条件,导致笛卡尔积。
- 不理解
GROUP BY 和 HAVING 的职责区别。
- 只会写语句模板,不理解它背后的关系代数意义。
三、视图、索引、存储过程、触发器
视图
- 本质是虚表,数据来自基本表。
- 作用包括简化复杂查询、隐藏敏感字段、提供一定逻辑独立性。
索引
- 本质是辅助查找结构,用空间换时间。
- B+ 树适合范围查询和有序访问。
- Hash 索引更适合等值查询。
存储过程与触发器
- 存储过程:显式调用的一组预编译 SQL。
- 触发器:由特定事件自动触发执行。
四、数据库设计方法
六个阶段
- 需求分析
- 概念设计
- 逻辑设计
- 物理设计
- 实施
- 运行维护
E-R 到关系模式的转换
- 1:1 联系:可并入任一方或单独处理。
- 1:n 联系:通常在 n 方加入 1 方主键。
- m:n 联系:通常新建关联表。
设计时要处理的冲突
五、设计与性能的关系
- 合理的范式减少异常和冗余。
- 合理的索引降低查询成本。
- 逻辑设计和物理设计不能割裂看。
六、复习提问
- SQL 为什么说是声明式、面向集合的语言?
- 视图和索引分别在解决什么问题?
- E-R 图中的 1:n 和 m:n 联系该如何转成表结构?
来源
- [[raw/Joplin/计算机专业基础/数据库/_计算机考研复试数据库核心知识点整理.md]]
- [[raw/Joplin/计算机专业基础/数据库/3.数据库——SQL与数据库设计.md]]
相关页面
- [[数据库]]
- [[关系数据库核心]]
- [[SQL]]
- [[范式]]