1、数据库的特点:
数据的结构化;高共享,低冗余和大容量;可靠性高;安全;数据独立;
2、三层模式结构:
内模式,也称物理模式,它描述了数据存储的物理结构和组织方式,是数据在数据库内部的表示方式。
逻辑模式:描述数据库中全体数据的逻辑结构,是所有用户的公共数据视图。
外模式:也称子模式,它描述了一个数据库用户所能看到的局部数据的逻辑结构。通常是逻辑模式的一个子集。
3、两层映像:
逻辑模式和物理模式映像,它定义了逻辑模式与存储结构之间的对应关系,例如记录和列是如何在磁盘上表示的。
外模式和逻辑模式映像,定义了外模式和逻辑模式之间的对应关系,用户在操作时对外模式的访问自动转化为对逻辑模式的访问。
1、元组:就是数据库中一行
域:就是数据库中的一列。
属性:数据库每个列的名字。
超键:若关系中某些属性组合起来能够唯一确定关系中的一个元组,则称该属性集合为关系的一个超键,通俗的解释就是:属性结合能够确定数据库的一行,即是超键。一个关系至少有一个超键即所有属性的集合。
候选键:特殊的超键,它的真子集都不构成超键,即称作候选键,就是把候选键给拆了,它的真子集不能确定一个元组。一个关系至少有一个候选键。
主键:从关系的候选键中挑选一个作为关系的主键,键包含的属性为主属性。在关系的定义中,主属性用下划线表示,这个在E-R图转换为关系模式不要忘记了。
2、关系的性质
列是同质的;列只能取原子值;不能有相同的元组;行的顺序无关。
3、实体完整性
实体完整性要求对于任何一个关系,的构成主键的属性值惟一并且不能为空。
4、参照完整性
要求一个关系含有外键,则构成外键的属性值要么指向被引用表的某一个主键的值,要么全部为空。
5、关系代数
投影:就是我们通常的进行select操作时需要选择的列。
选择:就是我们做选择等操作的where的条件
重命名:这个就相当于我们平时的as操作
连接:自然连接,先进行笛卡尔积然后再根据连接条件进行选择
左外连接:左外连接不仅包含自然连接的结果,而且左边关系中存在的属性而右边不存在的属性也被包含进来。
右外连接:右外连接不仅包含自然连接的结果,而且右边关系中存在的属性而←边不存在的属性也被包含进来。
全外连接:全外连接是左外连接和右外连接的并集。
1、数据定义语言DDL
create table, drop table, create view, create index
建表举例:
create table branch
(branch-name char(15),
branch-city char(30),
assets integer,
employee-number smallint,
primary key (branch-name), // 多个主键中间用,分隔
check (assets >= 0)) // 约束条件
create table account
(account-number char(10) primary key, // 主键
branch-name char(15) not null, // 非空的约束
balance float,
type char(8),
foreign key (branch-name) references branch, // 外键的引用
check (type in (‘Saving’, ‘Checking’ )) // 约束
表结构修改举例:
Alter table book add pos varchar(20) // book表新增一列 pos
Alter table book alter title varchar(200) // 修改book表的title列的长度为200个字符
Alter table book add constraint c1 check (year > 2000) // 新增约束 校验year是否大于2000
建立索引:
Creat index idx_book on book( title desc) // 给book表的title字段建立索引 倒序方式
建立视图:
create view branch-total-loan (branch-name, total-loan) as
select branch-name, sum(amount)
from loan
group by branch-name
视图的作用:
视图能够简化用户的操作
视图能使用户以多种角度看待同一数据
提供了逻辑独立性
对机密数据提供安全保护
2、数据操纵语言DML
select, insert, update, delete 注意集合操作的使用 尤其是题目中说最大 最小 某一的时候
例子1
找出所有的支行名称,这些分支点的资产大于某个在Brooklyn 城市的支行的资产,显示结果以支行名称的升序排列
表:branch (branch-name, branch-city, assets)
方法一:select distinct T.branch-name
from branch as T, branch as S
where T.assets > S.assets and S.branch-city = ‘Brooklyn’
order by T.branch-name
方法二:select branch-name from branch
where assets > some (select assets from branch
where branch-city = ‘Brooklyn’)
order by branch-name
例子2
找出所有资产大于平均资产的支行名称
select branch-name
from branch
where assets > (select avg(assets) from branch)
例子3:
找出至少有5个资产大于100万分支点的城市
select branch-city
from branch
where assets >1000000
group by branch-city
having count(branch-name)>=5
例子4:
删除所有Brooklyn城市的帐号
account (account-number, branch-name, balance)
branch (branch-name, branch-city, assets)
delete from account
where branch-name in (select branch-name
from branch
where branch-city=‘Brooklyn’)
例子5:
给所有余额大于平均余额的帐号增加5%的利息
account (account-number, branch-name, balance)
update account
set balance = balance *1.05
where balance > (select avg(balance) from account)
例子6
设销售数据模型如下:
厂家 S (SNO,SNAME,CITY )
产品 P (PNO,PNAME,COLOR,WEIGHT)
工程 J (JNO,JNAME,CITY)
销售 SPJ (SNO,PNO,JNO,QTY)
1) 用SQL完成查询:与“长风”在同一城市的厂家名;
Select sname from S where city = (select city form s where sname= '长风')
2)用SQL完成查询:至少使用P1,P2两种产品的工程名
Select pname from p
Where pno in (select pno from p where pname = 'P1')
And pno in (select pno from p where pname = 'P2')
3) 设有职工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY),其属性分别表示职工号、姓名、年龄、性别、工资。为每个工资低于1000元的女职工加薪200元,试写出这个操作的SQL语句
Update EMP set salary = salary + 300
Where sex = '女' and salary < 1000
4) 设有职工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY,DNO),其属性分别表示职工号、姓名、年龄、性别、工资,所在车间的编号。试写一个断言(断言名为ASSE4),要求每个车间女职工人数不少于20人。
create assertion ASSE4 check
(20 >= ALL( select count(eno) from EMP where sex = '女'
Group by DNO))
例子7:
PPT 42页上的例题,我觉得这个题最像考试题,不过题目的答案好像不是很准确
3、嵌入式sql如何与宿主语言通信?
一种是使用SQLCA和SQLDA结构,其中最常用的是使用SQLCA的sqlcode变量。
另一种是通过主变量的方式来实现宿主语言和sql的数据流动。
1、不好的数据库模式设计存在的问题
信息冗余和更新复杂
插入异常
删除异常
2、1NF:数据库中每一列都是不可再分的数据项,同一列中不能有多个值,不能说以列中是姓名和年龄。
2NF:要求实体属性完全依赖于关键字,如果存在非主属性部分依赖于关键字,应该把这个非主属性和所依赖的关键字单独出来,形成一个新的关系。比如A,B是关键字,然而
B-->C,即C部分函数依赖了B,存在部分函数依赖。
3NF:不存在传递函数依赖的2NF就是3NF,所谓传递依赖:A-->B, B-->C既不是。
BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的 如果存在非主属性决定主属性则不是BCNF,比如:ABC是关键字, D-->A 则不是BCNF,还有这样的情况也不是BCNF,
A-->B ,B-->A。
这块多做几个题目应该就ok了。
1、死锁的处理方法
1)死锁预防
一次封锁法
顺序封锁法
2)死锁检测与恢复
超时法
等待图法,该图由G=(V,E)组成,顶点集V由系统中所有的事务组成,边集E的每一个元素是一个有序对Ti ®Tj ,表示事务Ti在等待Tj释放所需的锁。当且仅当等待图中包含环时,系统中存在死锁。
3)死锁恢复
选择牺牲者
回滚
防止饿死
2、数据库的故障类型
1)事务故障
逻辑错误
系统错误
2)系统崩溃:如突然停电、硬件故障、软件错误等引起系统崩溃
故障停止假设:当系统崩溃时非易失存储器内容不被破坏
3)介质故障