--- title: "00-关系型数据库总览" created: 2025-11-25 tags: - 项目筑基 --- # 关系型数据库总览 ![[image-9e5f2a33.png]] ## 什么是关系型数据库? 关系型数据库(RDBMS)把数据组织成**一张张二维表**:行是记录、列是字段,表和表之间靠外键关联。操作它的语言是 **SQL**——"我要什么数据"直接写出来,数据库自己决定怎么取。 它有三个立身之本: - **结构先行(schema)**:先定义表结构,数据按结构入座。换来的是数据整齐、约束可靠。 - **SQL**:声明式查询,从简单 `SELECT` 到多表 JOIN、聚合,四十年生态积累。 - **事务(ACID)**:转账扣钱和到账要么都成功、要么都不成功——这是关系型最硬的底牌。 **MySQL** 和 **SQL Server** 都是 RDBMS:前者开源、互联网公司标配;后者微软出品,企业级特性全(数据仓库、报告服务)。学校教的是 [[01-数据库系统的一些概念|sqlserver]] 课程线,但概念通用——范式、事务、索引换到 MySQL 照样成立。我自学的 MySQL 主线在 [[01-数据库的管理技术及其发展|Mysql]] 子文件夹。 ## 和 Redis 比一比(为什么不能只有关系型) **Redis** 是基于内存的键值存储,支持字符串、列表、集合等结构,主要做高速缓存和临时数据。拿它和关系型放一起看,差异一目了然: | 维度 | Redis | MySQL / SQL Server | | --- | --- | --- | | 存储 | 内存为主(可持久化) | 磁盘为主 | | 数据组织 | 键 → 值 | 表格 + SQL | | 速度 | 极快,适合缓存、会话 | 相对慢,但扛得住复杂查询 | | 事务 | 有限支持 | 完整 ACID,复杂事务和高级查询 | | 定位 | 快速访问,不是长期主存储 | 强持久性和可靠性,长期存重要数据 | | 典型场景 | 缓存、消息队列、会话存储 | 电商、数据仓库、企业级应用 | 所以它们不是替代关系,而是**配合**:Redis 挡在前面扛速度,关系型在后面管持久。Redis 的完整内容在 [[00-NoSQL 数据库总览|02-NoSQL]] 组。 ## SQLite:不用装服务的关系型 SQLite 表、SQL、事务一样不少,只是它**不作为独立服务运行**——整个数据库就是嵌在程序里的一个文件,读写就是读写文件。手机 App、浏览器、各种桌面工具里它无处不在。 细节见 [[SQLite|SQLite]]。 ## 组内地图 学习顺序按编号走:概念 → 设计 → 建表操作 → T-SQL 编程 → 进阶专题。这批都是学校 sqlserver 课程的笔记,收在 `sqlserver/` 文件夹里;其中 10-15 查询六篇再聚在 `查询/` 子文件夹。SQLite 和 Mysql 是另外两个平级的产品子文件夹:`SQLite/`(单机主力,常查常新)与 `Mysql/`(自学主线,18 篇带编号)。`PostgreSQL/` 是最新加入的第四个平级产品子文件夹——正在系统学习,5 篇带编号(MySQL 对照式:基础 / 类型与表设计 / 查询进阶 / 索引与 MVCC / Python 实战)。 | 编号 | 笔记 | 内容 | | --- | --- | --- | | 01 | [[01-数据库系统的一些概念\|数据库系统的一些概念]] | 什么是 DBMS、数据模型,课程起点 | | 02 | [[02-数据库的管理技术及其发展\|数据库的管理技术及其发展]] | 数据库技术演进脉络 | | 03 | [[03-数据库的管理\|数据库的管理]] | DBMS 的实际管理与配置 | | 04 | [[04-设计数据库\|设计数据库]] | E-R 图到表结构的设计流程 | | 05 | [[05-三范式\|三范式]] | 1NF/2NF/3NF,表怎么拆才合理 | | 06 | [[06-表的管理\|表的管理]] | 建表、约束、修改表结构 | | 07 | [[07-数据插入(增)\|数据插入(增)]] | INSERT INTO 单行/多行/日期插入 | | 08 | [[08-数据删除(删)\|数据删除(删)]] | DELETE / TRUNCATE,逻辑删与物理删 | | 09 | [[09-数据修改(改)\|数据修改(改)]] | UPDATE 指定/规律/条件修改 | | 10 | [[10-关系代数与单表查询\|关系代数与单表查询]] | 查的理论根基:关系代数 + 单表的投影、筛选、生成表 | | 11 | [[11-聚合查询\|聚合查询]] | COUNT/SUM/AVG/MIN/MAX + GROUP BY + HAVING | | 12 | [[12-排序与语句执行顺序\|排序与语句执行顺序]] | ORDER BY / TOP,以及 from→where→group by→having→select→order by | | 13 | [[13-多表连接查询\|多表连接查询]] | 内连接、外连接、交叉连接,连接后照样能筛选分组 | | 14 | [[14-子查询与结果集归并\|子查询与结果集归并]] | 嵌套查询的三个位置 + UNION / Intersect / EXCEPT | | 15 | [[15-别名的妙用与limit分页\|别名的妙用与limit分页]] | 别名省遍历、救自连接,limit 分页公式,大总结 | | 16 | [[16-导入导出\|导入导出]] | 数据进出数据库 | | 17 | [[17-T-SQL程序设计\|T-SQL程序设计]] | 变量、流程控制、函数,SQL 变编程 | | 18 | [[18-存储过程\|存储过程]] | 把一段 SQL 封装成可调用的过程 | | 19 | [[19-事务与并发\|事务与并发]] | ACID、隔离级别、锁 | | 20 | [[20-索引\|索引]] | 让查询快起来的核心手段 | | 21 | [[21-视图\|视图]] | 虚拟表,常用查询的封装 | | 22 | [[22-用户管理(DBA命令)\|用户管理(DBA命令)]] | 权限、账号、DBA 日常 | | 23 | [[23-存储引擎\|存储引擎]] | InnoDB 等引擎,表下面的实现层 | | — | [[SQLite\|SQLite]] | 嵌入式关系型,一个文件的数据库 | | — | [[01-PostgreSQL 基础与 MySQL 对照\|PostgreSQL 系统讲解]] | 5 篇带编号(基础对照/类型表设计/查询进阶/索引 MVCC/Python 实战),`PostgreSQL/` 子文件夹 | | — | [[数据库.docx\|sqlserver 课程原稿]] | 学校课程 word 原稿(数据库.docx),收在 `sqlserver/assets/` | --- ⬅️ [[00-数据库|00-数据库]] 🏠 [[00-数据库|00-数据库]] ➡️ [[01-数据库系统的一些概念|数据库系统的一些概念]]