对象类型 |
对象 |
操作类型 |
数据库模式 |
模式 |
CREATE SCHEMA |
基本表 |
CREATE SCHEMA ,ALTER TABLE |
视图 |
CREATE VIEW |
索引 |
CREATE INDEX |
数据 |
基本表和视图 |
SELECT ,INSERT ,UPDATE ,DELETE ,REFERENCES ,ALL PRIVILEGES |
属性列 |
SELECT ,INSERT ,UPDATE ,REFERENCES ,ALL PRIVILEGES |
> SQL 语法教程:[runoob . SQL 教程](http://www.runoob.com/sql/sql-tutorial.html)
### 关系型数据库
* 基本关系操作:查询(选择、投影、连接(等值连接、自然连接、外连接(左外连接、右外连接))、除、并、差、交、笛卡尔积等)、插入、删除、修改
* 关系模型中的三类完整性约束:实体完整性、参照完整性、用户定义的完整性
#### 索引
* 数据库索引:顺序索引、B+ 树索引、hash 索引
* [MySQL 索引背后的数据结构及算法原理](http://blog.codinglabs.org/articles/theory-of-mysql-index.html)
### 数据库完整性
* 数据库的完整性是指数据的正确性和相容性。
* 完整性:为了防止数据库中存在不符合语义(不正确)的数据。
* 安全性:为了保护数据库防止恶意破坏和非法存取。
* 触发器:是用户定义在关系表中的一类由事件驱动的特殊过程。
### 关系数据理论
* 数据依赖是一个关系内部属性与属性之间的一种约束关系,是通过属性间值的相等与否体现出来的数据间相关联系。
* 最重要的数据依赖:函数依赖、多值依赖。
#### 范式
* 第一范式(1NF):属性(字段)是最小单位不可再分。
* 第二范式(2NF):满足 1NF,每个非主属性完全依赖于主键(消除 1NF 非主属性对码的部分函数依赖)。
* 第三范式(3NF):满足 2NF,任何非主属性不依赖于其他非主属性(消除 2NF 非主属性对码的传递函数依赖)。
* 鲍依斯-科得范式(BCNF):满足 3NF,任何非主属性不能对主键子集依赖(消除 3NF 主属性对码的部分和传递函数依赖)。
* 第四范式(4NF):满足 3NF,属性之间不能有非平凡且非函数依赖的多值依赖(消除 3NF 非平凡且非函数依赖的多值依赖)。
### 数据库恢复
* 事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
* 事物的 ACID 特性:原子性、一致性、隔离性、持续性。
* 恢复的实现技术:建立冗余数据 -> 利用冗余数据实施数据库恢复。
* 建立冗余数据常用技术:数据转储(动态海量转储、动态增量转储、静态海量转储、静态增量转储)、登记日志文件。
### 并发控制
* 事务是并发控制的基本单位。
* 并发操作带来的数据不一致性包括:丢失修改、不可重复读、读 “脏” 数据。
* 并发控制主要技术:封锁、时间戳、乐观控制法、多版本并发控制等。
* 基本封锁类型:排他锁(X 锁 / 写锁)、共享锁(S 锁 / 读锁)。
* 活锁死锁:
* 活锁:事务永远处于等待状态,可通过先来先服务的策略避免。
* 死锁:事务永远不能结束
* 预防:一次封锁法、顺序封锁法;
* 诊断:超时法、等待图法;
* 解除:撤销处理死锁代价最小的事务,并释放此事务的所有的锁,使其他事务得以继续运行下去。
* 可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。可串行性时并发事务正确调度的准则。