🗄️ 数据库基础
照着《完全图解数据库》做的自学笔记 —— 数据是怎么被存起来、管起来、随时取出来的?从「我们周围的数据」讲到关系模型、22 条 SQL 命令、约束与事务、表设计与三范式,再到备份恢复、SQL 注入防御和 AI 数据库。概念图解为主,SQL 示例用浏览器在线 SQLite 运行器就能跑(免安装)。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:计算机网络(数据怎么跑)、服务器工作原理(后台怎么运转)、C++ 基础(声明式 vs 过程式)。
内容来自我的 Obsidian 自学笔记 · 全 8 章 101 节完结 ✅
第一章 数据库的基础知识
数据、数据库-我们周围的数据
数据=对事实的记录(数字/文字/图像都算…
数据的登记、整理和查询-数据库的特征
三大本事=登记(持久)→ 整理(结构化…
数据库管理系统、DBMS-运行数据库的系统
数据库是仓库(货)、DBMS 是管理员系…
查询、限制、控制、访问权限、恢复-数据库的优势
五优势=查询(百万条一秒)/限制(约束拦…
商用、开源-数据库管理系统的种类
商用(Oracle/SQL Server…
SQL-用于操作数据库的命令
SQL=结构化查询语言、声明式(说要什么…
POS收银机、订单管理、分析-数据库的使用示例
POS=查商品+写销售记录;订单管理=增…
图书馆、购物网站-我们周围使用的数据库
图书馆=书变记录、借书改状态字段;购物网…
第二章 数据的存储方式-关系型数据库的特征
数据模型、层次模型、网状模型、关系模型-不同的数据存储方式
三模型=层次(树·一个爹)/网状(网·多…
表、列、记录、字段-以表格形式存储数据
表解剖图=列(字段·名字+类型)×行(记…
表连接-将各种表组合在一起
拆表动机=同一信息只存一处更新只改一处…
更新成本、延迟、分散-关系模型的优点与缺点
优点=更新成本低·一致性好(拆表所赐)…
NoSQL-非关系模型
NoSQL=Not Only SQL(跳…
键值类型、面向列型-NoSQL数据库的种类1-键与值的组合模型
键值型=键对值的储物柜(Redis·快但…
面向文档型、图型-NoSQL数据库的种类2-表现分层结构与关系的模型
文档型=JSON档案袋(MongoDB…
第三章 操作数据库-SQL的使用方法
SQL命令-操作数据库的准备工作
语句三零件=关键字+对象+分号;在线运行…
SQL语言的语句-操作数据命令的基本语法
一条语句一个分号;关键字不分大小写、字符…
CREATE DATABASE、DROP DATABASE-创建和删除数据库
库=表的容器;DROP 是全 SQL 最…
SHOW DATABASES、USE-显示与选择数据库
看楼层索引牌与推门进房;不 USE 就建…
CREATE TABLE、DROP TABLE-创建和删除表
造表三定=列名+类型+约束;主键不重不空…
INSERT INTO-添加记录
三种姿势=整行塞(怕串位)/点名塞(推荐…
SELECT-获取数据
SELECT 竖切挑列、FROM 定表…
WHERE、=、AND、OR-缩小范围查找符合条件的记录
WHERE 横切筛行;一个 = 就是判等…
!=、>、>=、<、<=、BETWEEN-用于查询的符号1-不相等的值、指定值的范围
比较符号全家福(!= 与 <> 同义)…
IN、LIKE、IS NULL-用于查询的符号2-包含值的数据、查询空数据
IN 名单制;LIKE 万能牌 % 与占…
UPDATE-更新记录
表+SET+WHERE 三段;忘 WHE…
DELETE-删除记录
DELETE 删行留表、DROP 拆柜…
ORDER BY-排列记录
ASC 默认升序、DESC 降序;多列接…
LIMIT、OFFSET-指定需要获取的记录数量
LIMIT 必配 ORDER BY;翻页…
COUNT函数-获取记录的数量
COUNT(*) 数行 vs COUNT…
MAX函数、MIN函数-获取记录的最大值和最小值
要数值用 MAX、要人用 ORDER B…
SUM函数、AVG函数-获取记录的合计值和平均值
AVG 分母=有值行数(319÷4=79…
GROUP BY-对记录进行分组
分堆+每堆聚合两步画面;SELECT 只…
HAVING-在分组后的记录中指定查询条件
WHERE 筛行、HAVING 筛堆;W…
JOIN-合并多个表获取数据
A JOIN B ON 对号=外键对主键…
内连接、INNER JOIN-获取与值匹配的记录
INNER 可省略=JOIN;配对失败直…
外连接、LEFT JOIN、RIGHT JOIN-获取标准记录及与之匹配的记录
以一方为准、落单补 NULL;LEFT…
第四章 管理数据-避免非法数据的功能
数据类型-指定可保存的数据类型
类型是第一道防线:建表时给每列指定类型…
INT、DECIMAL、FLOAT、DOUBLE-处理数值的数据类型
整数派 INT 够用就好;小数派里【钱永…
CHAR、VARCHAR、TEXT-处理字符串的数据类型
CHAR 定长补空格/VARCHAR 变…
DATE、DATETIME-处理日期和时间的数据类型
DATE 只存日期/DATETIME 带…
BOOLEAN-仅处理两种值的数据类型
真假两值;真相=底层 TINYINT:T…
约束、属性-限制允许保存的数据
约束总图:类型管【是什么】,约束管【合不…
DEFAULT-设置默认值
没提这列才给默认值;显式写 NULL 会…
NULL-当没有放入任何数据时
NULL 不是 0 不是空串是【没有值】…
NOT NULL-避免数据为空的状态
关键列禁止空:塞 NULL 当场报错;与…
UNIQUE-避免输入与其他记录重复的值
全表无重复;vs 主键:可 NULL、可…
AUTO_INCREMENT-自动输入连续的编号
数据库自动发号:只增不补/并发安全/别指…
PRIMARY KEY、主关键字、主键-使记录可以进行唯一识别
主键=行身份证:唯一/非空/一表一个;一…
FOREIGN KEY、外键-与其他表进行关联
外键=表间挂钩:只许填别表真实存在的值…
事务-集中执行无法分割的处理
多条 SQL 捆成整体:要么全成要么全不…
COMMIT-执行一组处理
交付键:COMMIT 前别人看不见/CO…
回滚-取消一组已经执行的处理
后悔药:改动全在草稿区,撤得干净;出错必…
死锁-两个处理发生冲突导致处理停止的问题
两事务互持对方要的锁环形等待;数据库检测…
第五章 引入数据库-数据库的结构与表的设计
步骤的整理-引入系统的流程
引入流程六步=调查/需求/设计/开发/测…
角色划分-引入系统的影响
三角色=用户/开发者/DBA;备份、权限…
引入的缺点、引入的目的-探讨是否应当引入数据库
缺点=成本/运维/学习曲线;信号=量大…
需求定义-整理用户需求和使用目的
回答谁用/干什么/保什么;采集=听访谈…
实体、属性-思考需要保存的数据
实体=要单独记住的对象(变表)、属性=特…
关系、一对多、多对多、一对一-思考数据之间的关系
三种形状:一对多外键塞多方/多对多造中间…
E-R图-使用图表表现数据之间的关系
三件套=实体方框·属性椭圆·关系菱形(主…
E-R图绘制方法-E-R图的表现形式
传统记法(菱形两端标 1/n)vs 乌鸦…
概念模型、逻辑模型、物理模型-E-R图的种类
三层下楼:概念(实体关系,用户看)→逻辑…
规范化-统一数据的格式
拆表工序总纲:目标【一份事实只存一处】…
第一范式-避免重复的项目
每格只装一个值:禁逗号串(LIKE 误伤…
第二范式-拆分其他种类的项目
非主键列必须认整个复合主键——只认一半的…
第三范式-拆分处于从属关系中的项目
非主键之间不许互相依赖(学号→系→系电话…
数值类型、字符串类型、日期类型-确定分配给列的设置
配型四问=数值吗/文字吗/日期吗/真假吗…
命名规则、同义词、同形(同音)异义词-确定表和列的名称
命名四条=见名知义/风格统一/单复数约定…
提取需求-书评网站表格设计的示例1-完成后的示意图
实战四连开工:需求清单+终点预览(三表两…
提取实体和属性-书评网站表格设计的示例2-理解数据之间的关系
三实体=用户/书/书评(弱实体当桥);平…
表的定义、中间表-书评网站表格设计的示例3-确定需要使用的表
users/books/reviews…
确定数据类型、约束条件、属性-书评网站表格设计的示例4-排列表和列
收官:配类型上约束写 DDL;ISBN=…
第六章 运用数据库-旨在安全运用
内部部署、云服务-放置数据库的场所
内部部署自己买自己管 vs 云服务租用厂…
电源、计算机病毒、成本-公司内部管理数据库服务器的注意事项
自管机房三类事:电源别断(UPS+发电机…
初始成本、运行成本-数据库运行成本
初始成本=买进来,运行成本=养下去;商用…
用户、权限-根据用户更改允许访问的范围
GRANT/REVOKE 精确到列;最小…
操作历史、日志、资源-监控数据库
三仪表:操作历史追责、慢查询日志定位瓶颈…
备份、全量备份、差分备份、增量备份-定期记录当前的数据
全量拷全部、差分对上次全量、增量对上次备…
转储、还原-迁移数据
转储导出 SQL 文本、还原执行重建;迁…
加密、解密-转换和保存敏感数据
可逆加密 vs 不可逆哈希;密码必须哈希…
版本升级-更新操作系统和软件的版本
升级两层对象+纪律三步=先备份·再测试…
第七章 用于保护数据库的基础知识-故障恢复与安全措施
物理威胁-对系统产生恶劣影响的问题1-物理威胁示例与对策
断电·火灾·地震·硬盘损坏——对策总思路…
技术威胁-对系统产生恶劣影响的问题2-技术威胁示例与对策
Bug·静默损坏·崩溃·死机——对策三板…
人的威胁-对系统产生恶劣影响的问题3-人的威胁示例与对策
无心(误删)与有意(内鬼)——流程管无心…
错误日志-发生错误的历史记录
数据库的病历本:级别·时间·语句·上下文…
语法错误、资源不足-错误的种类与对策
先分类再开药:语法错=改语句(拼错列名…
慢查询-执行时间较长的SQL语句
不报错但要命:全表扫描是病根;治理三步=…
索引-缩短获取数据的时间
查询的目录页(B 树有序结构):SCAN…
纵向扩展、横向扩展-均衡负载
Scale Up 换强机(简单有顶)vs…
同步复制-复制并运行数据库
主库唯一可写·从库扛读;同步=等从库确认…
SQL注入-从外部操作数据库的问题
把恶意 SQL 混进输入(' OR '1…
第八章 活用数据库-在应用程序中使用数据库
客户端软件-使用软件连接数据库
客户端=替你发 SQL 的图形界面;连接…
WordPress-在应用程序中使用数据库的示例
应用+数据库的活教材:wp_posts/…
第三方库、驱动程序-在程序中使用数据库
驱动=程序与数据库的翻译官;四步舞=连…
O-R映射、O-R映射器-以编程语言的格式操作数据库
表↔类·记录↔对象·列↔属性·外键↔引用…
Amazon RDS、Cloud SQL、Heroku Postgres-活用云服务
把 6-2 清单外包:硬件·补丁·备份…
缓存-高速获取数据
先查内存小本本再回源;TTL 定寿命;一…
大数据-收集和分析大量数据
3V=量大·增速快·种类杂;OLTP 管…
AI、人工智能、机器学习-学习数据的应用程序中的使用示例
不写规则让数据找规律:监督·无监督·推荐…
AI数据库-引入了AI技术的数据库
AI 住进数据库:自动调优·自然语言查库…