提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
博主最近终于想起自己上学期期末还在CSDN上发着复习博客呢,正好最近也在复习数据库,就顺便写一下复习总结吧。
我的内容依旧以习题为主,目的是立根基而非修枝叶,详细的基础概念还需读者自行参照ppt及其余资料。
本篇文章大致思路如下:
本篇文章仅作学习分享,如有谬误欢迎指正。
一、关系运算(第二章)
考点一:关系代数表达式书写
资料讲解
总结
这部分与sql语句的考察形式很像。重点掌握以下几个符号:
:选择一列
:选择一行
自然连接符号(不知道怎么打出来):需要多个表关联的时候就直接用它
除运算:出现"至少""全部"这样的字时用它
笛卡尔积:一般是出现"二"这样的字眼的时候用它
减运算:出现"不"这样的字眼的时候用它
例题1
参考答案
这里的答案实际上上图已给出,下面的其实是我又把这题重新写了一遍。。
1.这类型的题属实不太好用文字总结出统一的做题步骤,唯一的办法就是先看一下 视频教程再自己练习。
2.在书写时不要忘记在小括号内写上表对象。
二、SQL语句(第三章)
考点一:sql语句书写
资料讲解
这部分资料特别多,大家学习的路径不一,我就不列出具体的参考资料了。
总结
需要注意的点:
-
代码书写可以全部用小写
-
语句后跟的是()
-
括号内语句以逗号分隔
-
语句内以空格分隔
-
注意单词拼写
-
primary
-
constraint
-
References
-
foreign
-
-
注意以下关键词的使用
-
group by<>having
-
order by
-
join on
-
like通配符
-
例题1
参考答案
例题2
参考答案
三、E-R模型(第三章)
考点一:E-R模型的画法以及转化为关系模式
资料讲解
数据库原理期末考试有关E-R图的解题方法。_哔哩哔哩_bilibili
总结
这类题的难度是不大的,非常有规律可寻,步骤如下:
-
在题干中用方框框出所有的实体,用菱形框出所有的联系,用椭圆圈出所有的属性。(这里有个技巧是可以在框实体之前先去看题干给了哪些东西的属性,给了属性的才把它作为实体,没给的就不用。)
-
根据刚才框出的结果画出实体、联系、属性,各部分之间用直线连接
-
分析实体之间的关系是一对一、一堆多还是多对多,在实体旁标出数字
-
转化成关系模式:遵循下面的转换关系,转化好之后最好在主码下面加下划线
例题1
参考答案
本题中,便可以用到之前所说的技巧 :在确定实体的时候,直接先去看后面题干中哪些东西给出了属性,给出了属性的(产品、零件)才作为实体,没给的(工厂)就不作为实体。
例题2
由于本文编写得过于草率,下题中的字迹烦请忽略
参考答案
例题3
参考答案
考点二:范式的分解
资料讲解
给出关系模式如何写出函数依赖、如何将第一范式分解为第二范式、第三范式_哔哩哔哩_bilibili
总结
这一部分的考法也相对固定,题目给出关系模式或者数据表,让我们判断是第几范式,再一步步进行分解,要点总结如下:
-
第一范式:表内数据不可再分
-
第二范式:表内每个非主键都能被所有主键唯一标识(无部分依赖)
-
第三范式:表内不存在传递依赖
-
BCNF范式:表内所有函数依赖都由主键推出
-
第四范式:消除了多值依赖(例子中的)
例题1
参考答案
例题2
参考答案
四、并发与锁(第五章)
考点一:事务调度(加锁)
资料讲解
总结
有读有写上x锁,只有读的上s锁,别的事务锁住的时候就wait
例题1
参考答案
针对丢失修改(丢失更新):
针对脏读:
针对不可重复读:
步骤基本上都是一样的,先看事务中有哪些操作,如果只有读就用s锁,如果读写都有就用x锁。检验正确性的方法就是将两个事务串行运行一遍的结果与当前上锁之后并行运行的结果进行对比,一样则正确。
五、数据库应用编程(第六章)
考点一:书写数据库函数
资料讲解
总结
创建函数的格式如下:
create or replace function myFunc() returns integer as $$
declare
//在这里声明变量
begin
//在这里书写sql语句和返回值
end
$$language plpgsql
这里的$$可能有人会不理解是什么意思,实际上可以直接认为它是函数体开始和结束的标志即可,需要成对出现且内容一致。
例题1
参考答案
注意,对于成电信软专业考试需要手写代码的情况,,,需知道pgsql是不严格区分大小写的,所以所有的代码都可以用小写代替。
考点二:书写数据库触发器
资料讲解
总结
创建触发器需要两步:
1.创建触发器函数
2.创建触发器
其格式如下:
//创建触发器函数
create or replace function myTriggerFunc() returns trigger as $$
begin
//书写sql语句
return new;
end
$$language plpgsql
//创建触发器
create trigger my_trigger
after update on mytable
for each row
execute procedure myTriggerFunc();
例题1
参考答案
总结及参考
由于本篇文章于期末周内草率完成,内容不正确之处还请批评指正。此外,针对例题不足的情况,我会在之后尽力补充,不过就当前内容来说,基本的例题对于读者掌握做题方法来说应该是没有问题的。
相关参考: