明天考数据库系统工程师,回顾并且强化一下下午题的考点

没想到上次发随笔是19年的事情了,那时候我还是个没毕业的雄心壮志的女孩,现在我已经成为在单位里浑水摸鱼随便考考混职称的老油条了哈哈哈。

这几年里,我确实也去了互联网公司,做云服务的,卖面试课的,都是做一些测试的工作,也慢慢意识到自己也许根本不适合那行。

从懵懂往前冲,到现在找到想吃一辈子的饭碗,我花了五年,不算久但也浪费了我最宝贵的青春。

好了题外话结束。

目前机考,下午题有五题,每题15分。

1.SQL

2.E-R图

3.关系规范化(范式)

4.数据库故障与恢复

5.事务(触发器,存储过程)

 

1.SQL题

要会读SQL语句,理解意思

第一问3分左右,主要考填空,一般考约束:

PRIMARY KEY

REFERENCES 表名(属性名)

CHECK(属性名 >= 数值 / 属性名 BETWEEN 数值 AND 数值)

FOREIGN KEY 表名(属性名) REFERENCES 表名(属性名)

 

第二问5分左右,补全SQL语句,增删改查

SELECT * FROM 表名 WHERE

表1.属性=表2.属性 AND 属性值=数值

ORDER BY

GROUP BY ...HAVING

属性 IN/NOT IN (SELECT语句)、EXISTS/NOT EXISTS

 

第三问5分左右,一般考视图或者触发器,聚集函数

CREATE VIEW 名字(属性) AS (SELECT语句)

COUNT(*)

SUM()

AVG()

 

第四问2分左右,并交叉

UNION、EXCEPT、INTERSECT

 

2.E-R图(很简单,内容就不赘述了)

1. 补充实体联系 判断1:*  *:* 1:1(6分左右)

2.补充逻辑结构设计的空缺,判断主码外码(4分左右)

3.补充一个实体,并判断主码外码(5分左右)

 

3.关系规范化(范式)

1.判断是否满足X范式,并说明原因

     首先找出主码(一般是唯一的,不能被其他属性得到的)

     1NF:原子性,不可拆分

     2NF:消除了非主属性对主属性的部分函数依赖

     3NF:消除了非主属性对主属性的传递函数依赖

     BCNF:消除了主属性对主属性的部分函数依赖和传递函数依赖

     4NF:消除了非平凡的多值函数依赖

2.为了让某表满足第几范式,进行拆分,还有找出冗余

3.描述表格的主键外键

4.还有拆分后判断无损和有损

    U1 交 U2 如果能推出 U1-U2或U2-U1 ,就是无损的

 

4.数据库故障与恢复

一般考检查点机制

1.判断满足持久性的事务

   根据检查点机制的要求,在检查点的位置,已经COMMIT或者ROLLBACK的事务都已经满足持久性,

   处于活动时期的,发生故障时已经COMMIT或者ROLLBACK的事务也满足持久性。

2.计算出故障后恢复,那些值是初始值,哪些值改变了,变成了什么

   检查点处处于START,并且出故障前COMMIT或者ROLLBACK的事务要REDO,

   检查点处处于START,并且出故障前没有结束的事务要UNDO

3.描述恢复过程

  若是事务故障,根据日志文件,直接REDO

  若是系统故障,根据日志文件,REDO+UNDO

  若是内存故障,要根据镜像文件和日志文件,进行重装,并且REDO和UNDO

 

5.事务(触发器,存储过程,游标)(我学的好差,呜呜呜,能得5分就谢天谢地了,今天下午再补补)

两端锁协议:能保证可串行性,但不能保证不死锁

所谓两段:是整个事务中,先进行加锁,后释放锁,并且释放锁以后不能再申请和获得任何锁。

一级封锁协议:解决丢失修改的问题(修改前必须加排它锁)

二级封锁协议:解决丢失修改和不可重复读的问题(在一级的基础上,读取前必须加共享锁,读完后释放)

三级封锁协议:解决丢失修改、不可重复读和读脏数据的问题(在一级的基础上,事务结束后释放)

 

事务隔离级别

READ UNCOMMITTED(未提交读)

READ COMMITTED(提交读),避免读脏数据

REPEATABLE READ(可重复读),避免读脏数据和不可重复读

SERIAZABLE(序列化),最高级别的隔离,避免幻读(指的是第二次读的时候新增了数据)

 

事务

BEGIN TRANSECTION

commit、rollback都是事务的结束

 

  补充SQL语句

  CREATE TRIGGER 触发器名字  ON表名

                  BEFORE/AFTER 增删改语句

  FOR EACH ROW/STATEMENT

存储过程

CREATE PROCEDURE

 

游标

创建游标 DECLARE 游标名 CURSOR FOR 属性

开启游标 OPEN 游标名 

推动游标 FETCH 游标名

关闭游标 CLOSE 游标名

posted @ 2024-05-24 11:03  日常碎碎念  阅读(12)  评论(0)    收藏  举报