一、数据模型
- 层次模型
- 网状模型
- 关系模型(结构化数据模型)
- 关系模型
- E-R:实体关系模型
- 对象关系模型 :基于对象的数据模型
- 半结构化数据模型 xml(一条数据name、age、gender另一条数据 name、uid、birthday)
二、文件实现数据管理带来的缺陷
在数据库出现之前,所有的数据都是靠文件来实现数据管理的,那么文件管理数据的缺陷:
- 数据冗余和不一致行
- 数据访问困难(只能是将所有的数据载入内存中再来一个个比较我们需要的数据)
- 数据是孤立的(不遵循统一规范)
- 数据的完整性问题 (银行转账的例子)
- 数据的原子性问题(数据必须从一种稳定的状态转换到另一种稳定的状态)
- 并发访问异常
- 安全性问题
三、文件和关系型数据的三层关系
- 文件
- 表示层:文件
- 逻辑层:文件系统 存储引擎 (将底层的数据块抽象成文件给用户 将文件结构为底层的数据块存储在磁盘中)
- 物理层:在磁盘上是二进制数据 数据块 元数据
2. 关系型数据
- 表示层:数据表
- 逻辑层:存储引擎
- 物理层:数据文件
四、SQL结构化查询语言
- DML数据操作语言:insert select delete update
- DDL数据定义语言:create drop alter 库 表 索引 视图 用户 存储过程 触发器 事件调度器
约束:
- 域约束 数据存储的范围
- 外键约束 引用完整性约束
- 主键约束 某字段能唯一标示此字段所属的实体,且不能为空
- 唯一性约束 每一行的某字段都不允许出现相同值,可以为空
- 检查性约束
3. DCL数据控制语言:grant revote 控制用户访问权限
五、数据的存储和查询
- 存储管理器
- 权限及完整性管理
- 事物管理
- 文件管理
- 缓冲区管理
2. 查询管理器
- DML解释器 (理解DML语句)
- DDL
- DCL
- 查询执行引擎
补充:数据库是不能做到一个线程响应多个请求的,避免权限交叉。一个线程处理一个请求,所以mysql是多单进程多线程的,分为守护线程和应用线程;一个应用系统最慢的部分就是数据库,所以因减少与数据库的交互。提高效率应使用线程重用,用户退出之后不回收线程,放在线程池中,下一个用户直接拿来用。
六、mysql的执行流程
微观层面解析: