赞
踩
重点: 第一章(绪论), 第五章(数据库完整性), 第十一章(并发控制)
网状模型:
其实就是图
约数条件: 插入数据时, 允许插入尚未确定双亲结点值的子女结点值. 删除数据时, 允许只删除双亲结点值. 修改数据时, 可直接表示非树形结构, 而无需像层次模型那样增加冗余结点.
层次模型:
用户定义的一个数据操作序列, 这些操作要么全部执行, 要么全部不执行, 是一个不可分割的工作单元.
排它锁又称为写锁, 即X锁, 已有X锁或S锁时, 不能加X锁.
共享锁又称为读锁, 即S锁, 只有S锁时, 可加S锁.
一级封锁协议: 事务T在修改数据R之前必须先对其加X锁, 直到事务结束才释放.
一级封锁协议可防止丢失更新, 并保证事务T是可恢复的.
二级封锁协议: 一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 读完后即可释放S锁.
二级封锁协议除防止了丢失更新, 还可进一步防止读“脏”数据.
三级封锁协议是: 一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 直到事务结束才释放.
三级封锁协议除防止了丢失更新和不读‘脏’数据外, 还进一步防止了不可重复读.
概念: 有两个或两个以上的线程在执行的过程中, 由于竞争的资源或者彼此通信而造成的一种阻塞状态, 若无外力作用, 他们将都无法进行下去, 从而形成一直阻塞的状态叫死锁.
举例: 某计算机系统中只有一台打印机和一台输入 设备, 进程P1正占用输入设备, 同时又提出使用打印机的请求, 但此时打印机正被进程P2 所占用, 而P2在未释放打印机之前, 又提出请求使用正被P1占用着的输入设备. 这样两个进程相互无休止地等待下去, 均无法继续执行, 此时两个进程陷入死锁状态.
预防死锁: 一次封锁法, 顺序封锁法
死锁诊断: 超时法, 事务等待图法
结果正确, 当且仅当其结果与按某一顺序的串行执行的结果相同时, 该策略为可串行化调度策略. 两段锁协议可保证并发调度可串行化.
是指所有的事务必须分两个阶段对数据项加锁和解锁. 即事务分两个阶段, 第一个阶段是获得封锁. 事务可以获得任何数据项上的任何类型的锁, 但是不能释放; 第二阶段是释放封锁, 事务可以释放任何数据项上的任何类型的锁, 但不能申请.
注意:
重点: 第二章关系代数
笛卡尔积: 将关系R的每一行分别与关系S的每一行直接连接, 不用管相同属性.
将拥有共同属性的行进等值连接, 其余行舍弃.
保留没有共同属性的行(悬浮元组), 并将缺少的部分用null代替.
左外连接: 只保留左边关系表没有共同属性的行.
右外连接: 只保留右边关系表没有共同属性的行.
选择符合条件的某行或者某几行. 注意是一整行. 记为: δ 条件 (表名)
投一整列, 注意去重(若投影完后有两行完全相同, 只保留一行). 记为: π 列名1, 列名2… (表名)
最后保留R包含而S不包含的属性, 忽视S含有而R不含有的属性. 保留的属性所在行要包含所有共同属性.
重点: 第六章范式, 第七章E-R图
基本概念:
函数依赖:
求候选码:
依次对照各种范式的条件定位到属于哪种范式.
按要求将范式分解到更高级别的范式.
PS: 下面题目的候选码求的有问题, 应该是C, 主要看做题方法.
重点: 第三章SQL语言
整数和浮点数不需要加, 字符串和日期类型均需要加单引号
对表的操作:
建表
create table 表名 (
列名 类型,
列名 类型,
primary key(列名, 列名...), //表示主码
foreign key(列名) references 表名 (列名) //表示外码
)
除了上面的primary key
和foreign key
之外, 还有三个可以之际跟在类型后面的约数条件:
not null //不允许为空.
unique(列名) //不允许重复.
cherk(条件) //通常用来指定输入数据的范围, 例如: grade int cherk(grade >= 0 and grade <=100)
或者 sex char(4) cherk(sex = '男' or sex = '女')
删除表
drop table 表名 cascade
添加列
alter table 表名 add 列名 类型
删除列
alter table 表名 drop column 列名
修改列的类型
alter table 表名 alter column 列名 类型
对数据的操作:
添加数据:
insert into 表名 values (,,,)(,,,)(,,,)
删除数据:
delete from 表名 where 条件
修改数据:
update 表名 set 变量名 = 数据值 where 条件
排序:
selete 列名1, 列名2, 列名3... form 表名 order by 列名2
//order by后只写列名2或者在列名2后加asc, 表示将查找结果按照列名2进行升序排列selete 列名1, 列名2, 列名3... form 表名 order by 列名2 desc
//在列名2后加desc表示将查找结果按照列名2进行降序排列selete * form 表名 order by 列名1, 列名2 desc
//将整个表按照列名1升序排列, 如果列名1相同则按照列名2降序排列查找数据:
查找数据是最复杂的一种, 这里只列出几个必考的
查找名字中带有吴的人: selete 列名1 from 表名 where 列名1 = '%吴%'
// %是匹配任意字符串
查找员工名和公司名(分别在员工表和公司表, 两个表的共同列是公司编号): selete 员工表.名字列, 公司表.公司列 from 员工表, 公司表 where 员工表.公司编号 = 公司表.公司编号
//更多的表和两个表一个道理
统计总人数大于2的班级, 男生和女生分别有多少人, 列出班级, 性别, 人数:
select 班级列, sum(case when 性别列 = '男' then 1 else 0 end) as 男生人数, sum(case when 性别列 = '女' then 1 else 0 end) as 女生人数
from 班级表
group by 班级列
having (count(班级列) > 2);
视图的建立:
create view 视图名 as 列名1, 列名2, 列名3...
form 表名
where 条件
with check option
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。