数据库系统概论期末复习大总结

数据库

关系代数:

一.关系代数五个基本操作

1.选择(σ):把满足条件的元组找出来(元组对应行)
2.投影(Π):把不需要的列去掉(属性对应列,对某些或几列属性进行查询)
3.笛卡尔乘积(×):把2个关系拼接
4.集合差(-):集合中减法
5.集合并(∪):2个关系中模式相同的元组并起来

二.常用操作

1.集合交(∩):和数字中类似
2.连接
(1)条件连接:表1 表2=σ条件(表1×表2)
(2)等值连接:若(1)中条件都是相等判断,则是等值连接
(3)自然连接:2张表在它们所有的公共属性上做等值连接,并把结果中重复的
列去掉
在这里插入图片描述
(4)外连接:
①左外连接:把连接运算符左边的所有元组都保留下来,不匹配的元组在右边补
空值
②右外连接:把连接运算符右边的所有元组都保留下来,不匹配的元组在右边补
空值
③外连接:把所有元组都保留下来
3.除运算:查找所有(全部)(至少)…的时候用除法操作(所查信息不能在一个表中查)
在这里插入图片描述
首先两表相除需要有公共属性,除法作用是我们找出被除数中是否有一个或几个元组(除了公共属性以外的元祖)与除数中所有相关属性都有关联,往往全部…作为除数,而所查的信息(属性)作为被除数。
在这里插入图片描述

SQL查询:

基本查询

1.格式
select distinct 所查内容
from 所查询的表(可多个)
where 条件
2.常用条件
(1)between…and…,not between…and…,在…之间或不在…之
(2)in ,not 确定集合
(3)like 模糊查询
①%表示任意长度 ②_表示任意单个字符
③若你想查的字符为_,则在_前加
(4)and 查询结果满足and两边条件
or 查询结果满足两边一个条件就行
not 否定
(5)is null, is not null
3.聚集函数
(1)count(*):统计在一个关系中有多少元组
(2)count([distinct]A):计算属性A有多少个值(加distinct表示有多少不同的值)
(3)sum([distinct]A):A的属性上所有元组加一起求和
(4)avg([distinct]A):对A的属性上所有元组求平均值
(5)max([distinct]A):求属性A的最大值
(6)max([distinct]A):求属性A的最小值
4.查询完整格式
select [distinct] 所查内容 (注:having可以和聚集函数
from 所查询的表(可多个) 一起使用,where不可以)
where 条件或连接或嵌套
group by 属性 对属性相同的值进行分组
having 条件 对group by得到的组进行筛选
order by____(desc) 对查询结果的一个或多个属性升序或降序(desc)

5.连接查询
(1)用法:所查信息不能在一个表中查出来
(2)自然连接:在等值连接的基础上把重复属性列去掉
(3)自身连接:自己与自己做笛卡尔积,再连接条件做选择操作
(4)外连接
在这里插入图片描述
(5)多表连接
在这里插入图片描述

6.嵌套查询

(1)分类:
①不相关子查询:子查询的查询条件不依赖于父查询
在这里插入图片描述
②相关子查询:子查询的查询条件依赖于父查询
(2)in
(3)比较运算符
在这里插入图片描述
(3)any.all
在这里插入图片描述
在这里插入图片描述
(5)exists (存在), not exists(不存在)
在这里插入图片描述
在这里插入图片描述

7集合查询

(1)intersect(交)
(2)union(并)
(3)except(差)
8派生表
9插入数据
(1)插入元组:
insert
into 表名 (属性1,属性2,…)
values (值1,值2,…)
(2)插入子查询结果:
(3)insert
into 表名(属性1,属性2,…)
子查询

10.修改数据
update 表名
set 属性=修改的值
where 条件
子查询修改:(集合)
在这里插入图片描述

11.删除数据

delete
from 表名 (修改和删除的条件可以是子查洵)
where 条件
子查询删除(集合)

12.视图

(1)创建视图
create view 视图名(属性1,属性2,…) //属性可省
as 查询语句
[with check option] //可省,加上表示对视图进行更新,插入,删除操作
时要保证更新,插入或删除的行满足子查询中的条件表达式
在这里插入图片描述
(2)删除视图
drop view 视图名 [cascade] //cascade可省,表示级联删除该视图和它导出的所有视图
(3)查询视图,更新视图和基本表类似

完整性与安全性

1.三大完整性约束
基本概念:(1)候选码:一个或一组属性能唯一地标识一个元组,而其子集不能
(2)主码:若有多个候选码.则选其中一个为主码
(3)外键(外码):一个表中一个(多个)属性,不是自身的主码,且这个属性和另一个表中的主码属性是同一个属性,则这个(组)属性称为外码
(1)实体完整性:主码不能重复,主码不能为空
(2)参照完整性:外键不能为空(或者均为空值)外键等于被参照表的主码值
(3)用户定义完整性:用户自定义的完整性约束条件
2.可能大题:创建一个表,给出属性以及属性的条件,定义主建和外键,而且当你更新或删除与外键有关的另一个表时,这个表是否要级联,拒绝更新,删除
(1)基本概念:①数据类型:a.char(n):长度为n的定长字符串b.varchar(n):最大长度为n的变长字符串c.int:长整数(4字节) d.smallint:短整数(2字节)
②定义主建,外键
a.主键: primary key (属性1,属性2,) 相同
b.外键: foreign key 外键 reference 被参照表(主键)
③级联更新/删除:on delete/update cascade
④拒绝更新/删除:on delete/update no action
一般③④跟在外键后
(2)结构
create table 表名
(属性 数据类型 定义的约束条件 (包括①非空:not null②唯一 日唯unique③check:自定义的约束条件④定义为主码)
属性 数据类型 定义的约束条件

primary key (属性1,属性2)//定义主键
foreign key (属性)外键 references 被参照表(属性)主键 on delete/update cascade/no action
画√的地为可以加constraint 完整性约束条牛名
(4)授权
grant 权限(如delete)
on 对象类型(如table,view) 对象名
to 用户
[with grant option]//可省,加上表示可以将权限授予其他用户
(5)对权限收回
revoke 权限(如select)
on 对象类型(如table,view)
from 用户

范式

1.1NF:关系中的每个属性都是原子的,不可再分的,每个关系都要满足1NF

2.2NF:满足1NF且这张表中不存在属性对主键的部分函数依赖(部分函数依赖指的是依赖于主键的一部分)
如: S(sno,sname,age,cno,grade) 主键(sno,cno) 成绩由sno,cno共同决定,但sname,age仅由sno就可以决定,即sname,age只依赖于主键的一部分,所以不满足2NF
解决方法:一张表只管一件事.
把学生表分成学生基本信息表和选课表
S(sno,sname,age) SC(sno,cno,grade)
3.3NF:满足2NF且不存在属性对主键的传递依赖

如Teacher(T#,sal_level,salary)
T#(决定)→sal-level sal_level→salary
如将2级公资水评的工资为2000改为2级工资水平工资为3000。虽然学号没变,但工资额己经分为 Teacher(T#,sal_level) level(sal_level,salary)
解决方案:一张表管一件事
4.BCNF:不存在以下关系
R(C ,S , P)
在这里插入图片描述

E-R图

1.基本概念
在这里插入图片描述
3.转换为关系模型
(1)E-R图的实体转换为关系(表名)
(2)E-R图的属性转换为关系的属性
(3)联系转换
①联系种类:1:1,1:n(n:1),n:m
②联系转换方法:
a.1:1两种方法
第一种将联系转换成一个关系(表),这个关系的属性是两个关系的主码加联系的属性.
第二种是将一个关系的主码加联系的属性写到另一个关条中
b.1:n转换两种方法
第一种
第二种此时是将联条的1:n中1端关系的主码写到n端上

C.n:m

第一种

封锁协议

对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。
• 一级封锁协议可以防止丢失修改,并保证事务T是可恢复的
• 但不能保证可重复读和不读“ 脏” 数据。
封锁协议总结:
在这里插入图片描述
死锁:两个事务相互等待对方先释放资源,则会造成死锁。
解决:①一次封锁②顺序封锁
数据库故障
• 非预期的故障:事不能由应用程序发现的(称为非预期的故障),如: • 运算溢出 • 并发事务发生死锁而被选中撤销该事务 • 违反了某些完整性限制等务内部的故障
• 系统故障:是指造成系统停止运转、要重启的故障。 • 例如,硬件错误(CPU故障)、操作系统故障、突然停电等都是系统故障。 • 这样的故障会影响正在运行的所有事务,但不破坏数据库。
• 其他故障:介质故障:指外存故障,如磁盘损坏等。 • 这类故障会对数据库造成破坏,并影响正在操作的数据库的所有事务。 • 发生的可能性很小,但破坏性很大。
• 计算机病毒:的破坏性很大,而且极易传播,它也可能对数据库造成毁灭性的破坏。
总结两种: • 一是数据库本身被破坏。 • 二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。

  • 14
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值