关系型数据库总览

image-9e5f2a33

什么是关系型数据库?

关系型数据库(RDBMS)把数据组织成一张张二维表:行是记录、列是字段,表和表之间靠外键关联。操作它的语言是 SQL——"我要什么数据"直接写出来,数据库自己决定怎么取。

它有三个立身之本:

  • 结构先行(schema):先定义表结构,数据按结构入座。换来的是数据整齐、约束可靠。
  • SQL:声明式查询,从简单 SELECT 到多表 JOIN、聚合,四十年生态积累。
  • 事务(ACID):转账扣钱和到账要么都成功、要么都不成功——这是关系型最硬的底牌。

MySQLSQL Server 都是 RDBMS:前者开源、互联网公司标配;后者微软出品,企业级特性全(数据仓库、报告服务)。学校教的是 sqlserver 课程线,但概念通用——范式、事务、索引换到 MySQL 照样成立。我自学的 MySQL 主线在 Mysql 子文件夹。

和 Redis 比一比(为什么不能只有关系型)

Redis 是基于内存的键值存储,支持字符串、列表、集合等结构,主要做高速缓存和临时数据。拿它和关系型放一起看,差异一目了然:

维度 Redis MySQL / SQL Server
存储 内存为主(可持久化) 磁盘为主
数据组织 键 → 值 表格 + SQL
速度 极快,适合缓存、会话 相对慢,但扛得住复杂查询
事务 有限支持 完整 ACID,复杂事务和高级查询
定位 快速访问,不是长期主存储 强持久性和可靠性,长期存重要数据
典型场景 缓存、消息队列、会话存储 电商、数据仓库、企业级应用

所以它们不是替代关系,而是配合:Redis 挡在前面扛速度,关系型在后面管持久。Redis 的完整内容在 02-NoSQL 组。

SQLite:不用装服务的关系型

SQLite 表、SQL、事务一样不少,只是它不作为独立服务运行——整个数据库就是嵌在程序里的一个文件,读写就是读写文件。手机 App、浏览器、各种桌面工具里它无处不在。

细节见 SQLite

组内地图

学习顺序按编号走:概念 → 设计 → 建表操作 → T-SQL 编程 → 进阶专题。这批都是学校 sqlserver 课程的笔记,收在 sqlserver/ 文件夹里;其中 10-15 查询六篇再聚在 查询/ 子文件夹。SQLite 和 Mysql 是另外两个平级的产品子文件夹:SQLite/(单机主力,常查常新)与 Mysql/(自学主线,18 篇带编号)。PostgreSQL/ 是最新加入的第四个平级产品子文件夹——正在系统学习,5 篇带编号(MySQL 对照式:基础 / 类型与表设计 / 查询进阶 / 索引与 MVCC / Python 实战)。

编号 笔记 内容
01 数据库系统的一些概念 什么是 DBMS、数据模型,课程起点
02 数据库的管理技术及其发展 数据库技术演进脉络
03 数据库的管理 DBMS 的实际管理与配置
04 设计数据库 E-R 图到表结构的设计流程
05 三范式 1NF/2NF/3NF,表怎么拆才合理
06 表的管理 建表、约束、修改表结构
07 数据插入(增) INSERT INTO 单行/多行/日期插入
08 数据删除(删) DELETE / TRUNCATE,逻辑删与物理删
09 数据修改(改) UPDATE 指定/规律/条件修改
10 关系代数与单表查询 查的理论根基:关系代数 + 单表的投影、筛选、生成表
11 聚合查询 COUNT/SUM/AVG/MIN/MAX + GROUP BY + HAVING
12 排序与语句执行顺序 ORDER BY / TOP,以及 from→where→group by→having→select→order by
13 多表连接查询 内连接、外连接、交叉连接,连接后照样能筛选分组
14 子查询与结果集归并 嵌套查询的三个位置 + UNION / Intersect / EXCEPT
15 别名的妙用与limit分页 别名省遍历、救自连接,limit 分页公式,大总结
16 导入导出 数据进出数据库
17 T-SQL程序设计 变量、流程控制、函数,SQL 变编程
18 存储过程 把一段 SQL 封装成可调用的过程
19 事务与并发 ACID、隔离级别、锁
20 索引 让查询快起来的核心手段
21 视图 虚拟表,常用查询的封装
22 用户管理(DBA命令) 权限、账号、DBA 日常
23 存储引擎 InnoDB 等引擎,表下面的实现层
SQLite 嵌入式关系型,一个文件的数据库
PostgreSQL 系统讲解 5 篇带编号(基础对照/类型表设计/查询进阶/索引 MVCC/Python 实战),PostgreSQL/ 子文件夹
sqlserver 课程原稿 学校课程 word 原稿(数据库.docx),收在 sqlserver/assets/

⬅️ 00-数据库 🏠 00-数据库 ➡️ 数据库系统的一些概念