2024年3月更新:又到一年复试季了,但是现在大部分学校都是线下复试了,本篇经验是网上复试的,可能不太适合现在的情况
--------------------------------------------------------------------------------------------------
仅针对考研复试相关,没有计算部分的问题等我觉得不会问的部分(如果你报考的学校要求开摄像头做笔试当我没说)
(表示我背的八股文都快忘了,所以来这里整理一下 。以下内容仅仅是个人理解,参考数据库本科教材,可能会有错误的地方,希望大家批评指正)
有的参考书上会有单行函数 ∑(っ°Д°;)っ、、 高教版的没有
数据库大概分为11章
第一章:绪论(我觉得这玩意提问的频率最高)
第二章:关系数据库(投影、选择、并、差、笛卡尔积)
第三章:写SQL(?线上复试怎么写SQL,很迷)
第四章:数据库安全(我觉得不问)
第五章:数据库完整性(实体,参照,自定义)
第六章:关系数据库理论(范式)
第七章:数据库设计(需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库的实施和维护)
第八章:数据库编程(从未遇见过,可能是我格局小了)
第九章:关系查询处理和查询优化(?SQL优化这是真·八股文)
第十章:数据库恢复技术(事务ACID我也不会英文)
第十一章:并发控制+锁(嗯背)
第一章:绪论(我觉得这玩意提问的频率最高)
1.四个概念(数据,数据库,数据库管理系统,数据库系统)
数据:描述事物的符号记录
数据库(DB):长期存储在计算内有组织可共享的数据集合
数据库管理系统(DBMS):一种计算机基础软件,如MySQL,Oracle等
数据库系统(DBS)=DB+DBMS+DBA(数据库管路员)+。。。
2.三个阶段人工管理,文件管理,数据库管理
3.三个概念
DCL(数据库控制语言):由DBA负责,进行授权(Grant)或撤销(REVOKE)的管理
DDL(数据库定义语言):定义数据库对象,表级操作
DML(数据库操纵语言):实现增删改查
4.三级模式两级映像
外模式:是数据库用户的数据视图。是数据库中局部数据逻辑结构和特征的描述。
模式:是数据库中全体数据逻辑结构和特征的描述。
内模式:对物理结构的描述
外模式/模式:当模式发生改变时,保持外模式不变,保证了逻辑独立性。
模式/内模式:当存储结构发生改变时,程序不变,保证了物理独立性。
5.两大数据模型:
概念模型;
逻辑模型和物理模型;
数据模型三要素: 1.数据结构2.数据操作3.完整性约束(实体,参照,自定义)
6.E-R图(逻辑结构设计)
方框表示实体:如学生,课程
椭圆表示属性:学生姓名,学生编号,课程名
菱形表示联系:学生选课
7.数据模型(层次,网状,关系)
1.层次模型:树形
2.网状模型:无向图
3.关系模型:二维表
第二章:关系数据库(投影、选择、并、差、笛卡尔积)&&第五章前部分
8.关系操作(选择、投影、并、差、笛卡尔积 ``我觉得大概率不会问
1.选择(σ)从行的角度
查询年龄<20的学生
σ Sage<20(Student)
2.投影(Π)从列的角度
查询学生的姓名和系
ΠSname,Sdept(Student)
3.连接(符号我找不到)
查询成绩大于95学生的姓名和系
ΠSno,Sname(σ grade>95(Student 连接 SC))
。。。。
9.关系完整性
1.实体完整性:主键非空不能重复(学生学号不为空)
primary key(Sno);--定义Sno为主键
2.参照完整性:比如课程表中只有1,2,3号课程,那么在学生选课表中就不能出现4号课程。
FOREIGN KEY (SNO) REFERENCE STU(SNO);
--在选课表中定义SNO参照学生表中的SNO
3.用户自定义完整性:设置性别只能为男或女
sex CHAR(2) CHECK(SEX IN ('男','女'));
4.完整性约束命名(CONSTRAINT)
Sno NUMBER(6)
CONSTRAINT C1 CHECK(Sno BETWEEN 000000 AND 999999 );
Sname varchar(6)
CONSTRAINT C2 NOT NULL;
5.修改完整性约束
。。。。。。
扎不多德勒
第三章:写SQL(?线上复试怎么写SQL,很迷)
⑤SELECT
①FROM
②WHERE
③GROUP BY
④H\AVING、
⑥ORDER BY 最后一步
10.WHERE和H\AVING的区别
WHERE和H\AVING的区别在于作用域不同
WHERE是从全部中选择
H\AVING是从GROUP BY之后的分组中选择,HAVING必须和GROUP BY一起出现
11.索引(INDEX,约等于图书的目录)
建立索引可以提高查找性能,适合于内容不常改变的表,是数据库自动实现的(显然。。)
CREATE INDEX 索引名 ON STU(Sno);
DROP INDEX ON 索引名;
聚簇索引:物理位置与逻辑位置一样,一个表只能包含一个聚簇索引。
第四章:数据库安全(我觉得不问)
授权与回收:GRANT,REVOKE
**角色:**为了授权方面,所以创建了角色。
CREATE ROLE 名字
**视图:**试图是一个虚表,提供查询的窗口。
with read only///with check option;
第五章:数据库完整性(实体,参照,自定义)
实体,参照,自定义见第二章
12.触发器(trigger)
设置完触发器后自动执行(类似于烧水壶温度100自动断电)
Create TRIGGER 触发器
BEFORE|AFTER 增删改 ON 表名
FORE EACH {ROW|STATEMENT}
ROW行级:如果新插入的员工工资小于4000,则自动将工资变为4000。
STATEMENT 语句级(表级):
。。。。下列来自百度
行级触发器对DML语句影响的每个行执行一次. 语句级触发器对每个DML语句执行一次,
(如果一条insert语句在一个表中插入500行,
那么这个表的语句级触发器只执行一次,
而行级触发器要执行500次) 可以按字面意思理解:
行级触发器针对行,
语句级触发器针对语句(一个语句可以包含多行).
。。。。
第六章:关系数据库理论(范式)**
1.平凡函数依赖(学号,课程号)—>课程号 (条件包含结论)
非平凡函数依赖(学号,课程号)—>成绩(条件不包含结论)
2.完全函数依赖(学号,课程号)—>成绩(缺一不可)
部分函数依赖(学号,课程号)—>姓名(部分就可以)
3.传递函数依赖
学生(Sno,Sname,Deptno,Sdept)
Sno—>deptno—>Sdeptname
1NF:每个属性都是不可再分的
↓ 消除非主属性对码的部分函数依赖
↓
2NF:每个非主属性都完全函数依赖于码
↓ 消除非主属性对码的传递函数依赖
↓
3NF:不存在非主属性都传递函数依赖于码
↓ 消除主属性对码的部分函数依赖和传递函数依赖
↓
BCNF
第七章:数据库设计(需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库的实施和维护)
1.需求分析
2.概念结构设计(E-R图,UML)
3.逻辑结构设计(设计数据库表CREATE)
4.物理结构设计(存储结构)
5.数据库的实施和维护
第八章:数据库编程(从未遇见过,可能是我格局小了)
游标:方便对结果集的数据进行处理。
四步:
声明游标,打开游标,从游标中处理数据,关闭游标。
第九章:关系查询处理和查询优化(?SQL优化这是真·八股文)
第十章:数据库恢复技术(事务ACID我不会英文)
BEGIN TRANSACTION 开始事务
COMMIT;提交
ROLLBACK;回滚
事务的四大特性: 原子性,一致性,持久性,隔离性
经典解释:
原子性: A–》B转100元,A的账户-100,B的+100,两个事情要么同时发生,要么同时不发生。
持久性: A–>B转钱的过程是真是发生的,(理论上)就是的
一致性 :结合后面的不一致状态
第十一章:并发控制+锁(嗯背)
事务是并发控制的基本单位
1.并发控制导致的三个问题:
1.丢失修改:A对数据进行了修改,但B在读取数据时仍读的是未修改的数据(人话:B想抄A的答案,A本来写的1后来改成了0,但是由于未知的原因B抄的答案是1)
2.不可重复读:在同一事务中,两次读取同一数据,得到内容不同
3.脏读:一个事务读取到了另外一个事务没有提交的数据
2.封锁
排它锁(exclude,X锁,写锁):A对事务加了X锁,A可读可写,其他事务不能操作。
共享锁(share,S锁,读锁):A对事务加了S锁后,其他也可以加S锁,都可以读,但是都不能写
3.三级封锁:
一级封锁:修改前先加X锁,事务结束释放,可以防止丢失修改。
二级封锁:读取前加S锁,读完后释放,可以防止丢失修改,脏读。
三级封锁:读取前加S锁,事务结束释放,可以防止丢失修改,脏读,不可重复读。
4.活锁&死锁:
活锁(饥饿):某个事务可能无限等待
死锁:两个或多个事务互相等待对方
死锁预防:
一次封锁:事务把所需要的的资源全部加锁。
顺序封锁:
死锁检测解除: 结合OS
超时法(等待时间超过规定时间就认为死锁了)
等待图法