知识点
- SQL/MySQL;
- 事务,隔离,并发控制,锁;
- 用户和权限;
- 监控:STATUS;
- 索引类型:查询,VARIABLES;
- 备份和恢复;
- 复制功能;
- 集群;
文件
- 数据冗余(同一份文件可能重复多次)和不一致性(保持一份文件修改时要同时修改);
- 数据访问困难(保存一千行文本,找出符合条件的文本太困难。);
- 数据是孤立的。(每一个数据的定义是不规范的,是孤立的);
- 完整性问题(一个账户给另一个账户转账500,无论成功是否总和应该不变,无法得到保证);
- 原子性问题(一个账户减去500另一个账户加上500,两个操作必须同时完成);
- 并发访问异常(多个用户同时访问同一个数据);
- 安全性问题(需要做数据的部分授权时候没办法做到)。
DBMS(数据库管理系统)
- 层次模型;
- 网状模型;
- 关系模型:关系模型(结构化数据模型);E-R实体-关系模型;对象关系模型(基于对象的数据模型);半结构化的数据模型(每一行不仅存储数据本身,还要把数据的标签存下来)。
DML(数据操纵语言):增删查改; INSERT、DELETE、SELECT、UPDATE。
DDL(数据定义语言):库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调度器; CREATE、DROP、ALTER。满足数据的约束性:域约束(数据类型约束)、外键约束(引用完整型约束)、主键约束(此字段可以唯一标识实体,且主键不允许为空)、唯一性约束(每一行的某字段都不允许出现重复,可以为空)、检查性约束(不可以违反现实逻辑)
**DCL(数据控制语言):**数据库里的用户的权限管理; GRANK、REVOKE。
数据存储和查询:
1)存储管理器、DDL(权限管理及完整性管理器、事务管理器、文件管理器、缓冲区管理器);
2)查询管理器、DML (负责接受用户查询,理解用户查询,将用户的查询、存储转换为对应的存储管理器能够 理解的语句或者逻辑,将数据从硬盘上存储或者删除;DML解释器、DDL解释器、查询执行引擎)。
关系运算:
- 投影(只选择指定的属性);
- 选择(只选择指定的行);
- 自然链接(具有相同名字的所有属性上取值相同的行);
- 笛卡尔积;
- 并(集合运算)。
SQL语句
SQL语言的组成部分(可以粗略地理解为DDL、DML、DCL)
- DDL;
- DML;
- 完整性定义语言:DDL的一部分功能;
- 视图定义;
- 事务控制;
- 嵌入式SQL和动态SQL;
- 授权:DCL。
MySQL模块
连接管理器用于监听用户的请求;线程管理器负责跟踪用户请求,负责每一个用户的连接请求;用户模块主要是用来验证用户身份的;命令分发模块是将请求分发给缓存模块、日志模块或者解析器;解析器是解析查询并生成执行数的,之后交给特定的模块去处理;优化器负责创建响应请求时的最佳响应策略;表管理器是将表的定义转换成对应的文件,负责创建读取或修改表定义文件,维护表描述符高速缓存,管理表锁;表定义模块是表创建、删除、重命名、移除、更新或插入之类的操作;表维护模块是表的检查、修改、备份、恢复、优化及解析;访问控制模块用来是否真正具有权限来执行所请求的操作。
1)5.5.8 MyISAM 特别适用于仓库
2) 5.5.8后 InnoDB 特别适用于事务在线处理
文件中记录组织:
- 堆文件组织:一条记录可以存在任何地方;
- 顺序文件组织:根据“搜索码”顺序存放文件。
- 散列文件组织:
表结构定义文件、表数据文件
表空间 table space, 用一个文件放多个表的数据的另外一个逻辑管理空间。
数据字典:Data Dictionary。,关系的元数据。
- 关系的名字
- 字段的名字
- 字段的类型和长度
- 视图
- 约束
- 用户名字、权限、密码
使用程序设计语言如何和RDBMS交互
1)嵌入式SQL:与动态SQL类似,但其语言必须程序编译时完全确定下来,如ODBC;
2)动态SQL:程序设计语言使用函数(mysqk_connect())或者方法与RDBMS服务器建立连接,并进行交互;通过建立连接向SQL服务器发送查询语句。并将结果保存至变量中而进行处理,如JDBC。