C(CNO,CNAME,CDEPT,TNAME) 试用SQL的查询语句表达下列查询:
⑴ 检索LIU老师所授课程的课程号和课程名。 ⑵ 检索年龄大于23岁的男学生的学号和姓名。
⑶ 检索学号为200915146的学生所学课程的课程名和任课教师名。 ⑷ 检索至少选修LIU老师所授课程中一门课程的女学生姓名。 ⑸ 检索WANG同学不学的课程的课程号。 ⑹ 检索至少选修两门课程的学生学号。
⑺ 检索全部学生都选修的课程的课程号与课程名。 ⑻ 检索选修课程包含LIU老师所授课程的学生学号。 解:
⑴ select c#,cname from c where teacher=’liu’;
⑵ select s#,sname from s where age>23 and sex=’m’;
⑶ select cname,teacher from sc,c where sc.c#=c.c# and s#=’200915146’
⑷ select sname (连接查询方式) from s,sc,c where s.s#=sc.s# and sc.c#=c.c# and sex=’f’ and teacher=’liu’; 或:
select sname (嵌套查询方式) from s where sex=’f’and s# in (select s# from sc where c# in (select c# from c where teacher=’liu’)) 或:
select sname (存在量词方式) from s where sex=’f’ and exists(select* from sc where sc.s#=s.s# and exists(select * from c where c.c#=sc.c# and teacher=’liu’))
⑸ select c# from c where not exists (select * from s,sc where s.s#=sc.s# and sc.c#=c.c# and sname=’wang));
⑹ select distinct x.s# from sc as x,sc as y where x.s#=y.s# and x.c#!=y.c#; ⑺ select c#.cname from c where not exists (select * from s where not exists (select * from sc where s#=s.s# and c#=c.c#));
⑻ select distinct s# from sc as x where not existis (select * from c where teacher=’liu’ and not exists
(select * from sc as y where y.s#=x.s# and y.c#=c.c#));
4-3 试用SQL查询语句表达下列对4.2题中教务管理数据库的三个基本表S、SC、C查询: ⑴ 统计有学生选修的课程门数。
⑵ 求选修4号课程的学生的平均年龄。
⑶ 求LIU老师所授课程的每门课程的学生平均成绩。 第 8 页
⑷ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 ⑸ 检索学号比WANG同学大,而年龄比他小的学生姓名。 ⑹ 检索姓名以WANG打头的所有学生的姓名和年龄。 ⑺ 在SC中检索成绩为空值的学生学号和课程号。 ⑻ 求年龄大于女同学平均年龄的男学生姓名和年龄。
⑼ 求年龄大于所有女同学年龄的男学生姓名和年龄。 解:
⑴ select count(distinct c#) from sc;
⑵ select avg(age) from s,sc where s.s#=sc.s# and c#=’4’and sex=’f’; ⑶ select c.c#,avg(grade) from sc,c where sc.c#=c.c# and teacher=’liu’;
⑷ select c#,count(s#) from sc group by c# having count(*)>10 order by 2 desc,1;
⑸ select sname from s where s#>all(select s# from s where sname=’wang’ and age ⑻ select sname,age from s where sex=’m’and age>(select avg(age) from s where sex=’f’); ⑼ select sname,age from s where sex=’m’and age>all(select age from s where sex=’f’); 4-4 试用SQL更新语句表达对4.2给出的教务管理数据库中三个基本表S、SC、C进行如下更新操作: ⑴ 往基本表S中插入一个学生元组(‘200912143’,‘张晶’,21)。 ⑵ 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。 ⑶ 在基本表SC中删除尚无成绩的选课元组。 ⑷ 把张成民同学在SC中的选课记录全部删去。 ⑸ 把选修高等数学课程中不及格的成绩全部改为空值。 ⑹ 把低于总平均成绩的女同学成绩提高5%。 ⑺ 在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。 解: ⑴insert into s(s#,sname,age) values(‘200912143’,’张晶’,21); insert into student⑵(sno,sname,sex) select s#,sname,sex from s where s# in (select s# from sc where 80<=all(select grade from sc group by s#)); delete from sc⑶ where grade is null; dele⑷te from sc where s# in(select s# from s where sname=’张民’) ⑸update sc set grade=null where grade<60 and c# in(select c# from c where cname=’高等数学’); ⑹update sc set grade=grade*1.05 where s# in(select s# from s where sex=’f’) and grade<(select avg(grade) from sc); ⑺ 用两个update语句实现: update sc set grade=grade*1.04 where c#=’4’and grade>75; update sc set grade=grade*1.05 where c#=’4’and grade<=75; 注意:这两个update语句的顺序不能颠倒。 4-5 假设某“仓库管理”关系模型有下列五个关系模式: 零件part(pno,pname,color,weight) 项目project(jno,jname,jdate) 供应商supplier(sno,sname,saddr) 供应p_p(jno,pno,total) 采购p_s(pno,sno,quantity) ⑴ 试用sql ddl语句定义上述五个基本表,并说明主键和外键。 ⑵ 试将project、p_p、part三个基本表的自然联接定义为一个视图view1, part、p_s、supplier三个基本表的自然联接定义为一个视图view2。 ⑶ 试在上述两个视图的基础上进行数据查询: ① 检索上海的供应商所供应的零件的编号和名字。 ② 检索项目j4所用零件的供应商编号和名字。 解: ⑴ create table part (pno char(6),pname char(10) not null,color char(6),weight float(6),primary key(pno)); create table project (jno char(6),jname char(12)not null,date date,primary key(jno)); create table supplier (sno char(8),sname char(12)not null,saddr varchar(30),primary key(sno)); create table p_p (jno char(6),pno char(6),total integer,primary key(jno,pno); foreign key(jno) references project(jno), foreign key(pno) references part(pno)); create table p_s (pno char(6),sno char(8),quantity integer,primary key(pno,sno) foreign key(pno) references part(pno), foreign key(sno) references supplier(sno)); ⑵ create view viewl as select a.jno,jname,date,c.pno,pname,color,weight,total from project a,p_p b,part c where a.jno=b.jno and b.pno=c.pno; create view view2 as select a.pno,pname,color,weight,c.sno,sname,saddr,quantity from part a,p_s b,supplier c where a.pno=b.pno and b.sno=c.sno; ⑶① select pno,pname from view2 where saddr like ’上海%’; ② select sno,sname from viewl,view2 where viewl.pno=view2.pno and jno=’j4’; 4-6 对于教务管理数据库中基本表sc,已建立下列视图: create view s_grade(sno,c_num,avg_grade) as select sno,count(cno),avg(grade) from sc group by sno; 试判断下列查询和更新是否允许执行。若允许,写出转换到基本表sc上的相应操 作: ⑴ select * from s_grade ⑵ select sno,c_num from s_grade where avg_grade>80; ⑶ select sno,avg_grade from s_grade where c_num>(select c_num from s_grade sno=’200912121’); ⑷ update s_grade set c_num=c_num+1 where sno=’200915122’ ⑸ delete from s_grade where c_num>4; 答:⑴ 允许查询。相应的操作如下: select sno,count(cno) as c_num,avg(grade) as avg_grade from sc group by sno; ⑵ 允许查询。相应的操作如下: select sno,count(cno)as c_num from sc group by sno having avg(grade)>80; ⑶ 允许查询。相应的操作如下: select sno,avg(grade) as avg_grade from sc group by sno having count(cno)>(select count(cno) from sc group by sno having sno=’200912121’); 第 12 页 ⑷ 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。 ⑸ 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。 4-7 预处理方式对于嵌入式SQL的实现有什么重要意义? 答:此时宿主语言的编译程序不必改动,只要提供一个SQL函数定义库,供编译时使用。预处理方式只是把源程序中的SQL语句处理成宿主语言的函数调用形式。 4-8 SQL的集合处理方式与宿主语言单记录处理方式之间如何协调? 答:用游标机制协调。把SELECT语句查询结果定义成游标关系,以使用文件的方式来使用游标关系。与游标有关的SQL语句有4个:游标定义,游标打开,游标推进,游标关闭。 4-9嵌入式SQL的DML语句何时不必涉及到游标?何时必须涉及到游标? 答:不使用游标的SQL语句有下面两种情况: ① INSERT、DELETE、UPDATE语句,只要加上前缀和结束标志,就能嵌入在宿主语言程序中使用; ② 对于SELECT语句,如果已知查询结果肯定是单元组,也可不必涉及游标操作。 使用游标的SQL语句有下面两种情况: ① 当SELECT语句查询结果是多个元组时,必须用游标机制把多个元组一次一个地传递给主程序处理: ② 对游标指向元组进行修改或删除操作时,也涉及到游标。 4.10 用T-SQL语句创建教务管理数据库(JWGL),在SQL Server 2005的查询分析器的环境中验证习题4.2、习题4.3和习题4.4的有关内容。 略。 习题5 5-1 解释下列名词 函数依赖 函数依赖集F的闭包F+ 最小依赖集 无损分解 保持函数依赖 1NF 2NF 3NF BCNF 答: 函数依赖:设有关系模式R(U),X和Y是属性集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作X→Y。 函数依赖集F的闭包F+:被F逻辑蕴涵的函数依赖全体构成的集合,称为F的闭包,记为F+。 最小依赖集:设F是属性集U上的FD集,Fmin是F的最小依赖集,那么Fmin应满足下列四个条件:(Fmin)+=F+;每个FD的右边都是单属性;Fmin中没有冗余的FD;每个FD的左边没有冗余的属性。 无损分解:设关系模式R,F是R上的FD集,ρ={Rl,…,Rk}是R的一个分解。如果对R 中满足F的每一关系r,都有r= πRi(r),那么称分解ρ相对F是“无损分解”。 保持函数依赖:设关系模式R,F是R上的FD分解,ρ={R1,…,Rk}是R的一个分解,如果有 1(())ikRiFFπ++==∪ k i=1 第 13 页 那么称分解p保持FD集F。 1NF:如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是1NF的模式。 2NF:如果R是1NF的模式,且每个非主属性完全函数依赖于R的候选键,那么称R是2NF的模式。 3NF:如果R是1NF的模式,且每个非主属性都不传递依赖于R的候选键,那么称R是3NF的模式。 BCNF:如果R是1NF的模式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。 5-2 已知关系模式R(ABC),F是R上成立的FD集,F={A→B,B→C},试写出F的闭包F+。 解: 根据已知条件和推理规则,可知F+有43个FD: A→Ф AB→Ф AC→Ф ABC→Ф B→Ф C→Ф A→A AB→A AC→A ABC→A B→B C→C A→B AB→B AC→B ABC→B B→C Ф→Ф A→C AB→C AC→C ABC→C B→BC A→AB AB→AB AC→AB ABC→AB BC→Ф A→AC AB→AC AC→AC ABC→AC BC→B A→BC AB→BC AC→BC ABC→BC BC→C A→ABC AB→ABC AC→ABC ABC→ABC BC→BC 5-3 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,试写出关系模式R的关键码。并说明理由。 解:R的关键码为ACD。因为从已知的F,只能推出ACD→ABCD。 5-4 设关系R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A}。求出R的候选键。 解:R的候选键有4个:A、E、CD和BC。 5-5 设关系模式R(ABC),F是R上成立的FD集,F={B→C,C→A},那么分解ρ={AB,AC}相对于F,是否无损分解和保持FD?并说明理由。 答:已知F={B→C,C→A},而πAB(F)={B→A},πAC(F)={C→A},显然这个分解丢失了FD:B→C。 对于保持无损分解: 无a行,所以是有损分解。 5-6 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C,A→D,D→C},ρ={AB,AC,BD}是R的一个分解。 ⑴ 相对于F,ρ是无损分解吗?为什么? ⑵ 试求F在ρ的每个模式上的投影。 ⑶ ρ保持F吗?为什么? 答: ⑴ 用测试过程可以知道,ρ相对于F是损失分解。 ⑵ πAB(F)={A→B},πAC(F)={A→C},πBD(F)=Ф。 A B C AB AC a1 a2 b13 a1 b22 a3 A B C ABACa1 a2 b13 a1 b22 a3 由FD 第 14 页 ⑶ 显然,分解ρ相对于F不保持FD分解,因为丢失了B→C,A→D,D→C等三个FD。 5-7 设关系模式R(ABCD),R上的FD集F={A→C,D→C,BD→A},试说明ρ={AB, ACD,BCD}相对于F是损失分解的理由。 答:根据已知的F集,不可能把初始表格修改为一个全a行的表格,因此ρ相对于F是损失分解。 5-8 设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。 ⑴ 试说明R不是2NF模式的理由。 ⑵ 试把R分解成2NF模式集。 答:⑴ 从已知的函数依赖集F,可知R的候选键是AB。另外,由AB→CD可推出AB→D,再由A→D可知AB→D是部分(局部)函数依赖,因此R不是2NF模式。 ⑵ 如果将R分解成ρ={AD,ABC},则ρ是2NF模式集。 5-9 设关系模式R(ABC),F是R上成立的FD集,F={C→B,B→A}。 ⑴ 试说明R不是3NF模式的理由。 ⑵ 试把R分解成3NF模式集。 答:⑴ 从已知函数依赖集F可知,R的候选键是C。由C→B,B→A可知,C→A是一个传递依赖,因此R不是3NF模式。 ⑵ 此时如果将R分解成ρ={CB,BA},则ρ是3NF模式集。 5-10设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。试回答下列问题: ⑴ 根据上述规定,写出模式R的基本FD和关键码; ⑵ 说明R不是2NF的理由,并把R分解成2NF模式集; ⑶ 进而分解成3NF模式集。 解: ⑴ 基本的FD有三个: (职工编号,日期)→ 日营业额 职工编号 → 部门名 部门名 → 部门经理 R的关键码为:(职工编号,日期)。 ⑵ R中有两个这样的FD: (职工编号,日期)→(部门名,部门经理) 职工编号 →(部门名,部门经理) 可见前一个FD是局部依赖,所以R不是2NF模式。 R应分解Rl(职工编号,部门名,部门经理) R2(职工编号,日期,日营业额) 此处,Rl和R2都是2NF模式。 ⑶ R2已是3NF模式。 在R1中,存在两个FD:职工编号 → 部门名 部门名 → 部门经理 因此,“职工编号 → 部门经理”是一个传递依赖,Rl不是3NF模式。 R1应分解成R11(职工编号,部门名) R12(部门名,部门经理) 这样,ρ={R11,Rl2,R2}是一个3NF模式集。 第 15 页 11,R12,R2}是一个3NF模式集。 6-14 设某商业集团数据库中有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。 商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。 试画出ER图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系模式的主键和外键。 解:ER图如下图所示。 所转换成的关系: 商品(商品号,商品名,规格,单价) 商店(商店编号,商店名,地址) 销售(商店编号,商品号,月销售量) 职工(职工编号,姓名,性别,业绩,聘期,月薪,商店编号) 6-15 设某商业集团数据库中有三个实体集。一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等。 公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖; 仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。 试画出ER图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系模式的主键和外键。 解:ER图及属性、联系图如下: M销售聘用商店编号 商店 商店名 地址 聘期月薪职工编号 业绩职工 性别姓名月销售量N1N商品号 商品名单价商品 规格 第 19 页 将ER图转换成为关系模式集为: 公司(公司编号,公司名,地址) 仓库(仓库编号,仓库名,地址,公司编号) 职工(职工编号,姓名,性别,仓库编号,聘期,工资) 6-16 设某商业集团数据库中有三个实体集。一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等。 供应商与商品间存在“供应”联系,每个供应商可供应多种商品,每种商品可向多个供应商订购,供应商供应每种商品有月供应量;商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,商店销售商品有月计划数。 试画出ER图,并在图上注明属性、联系的类型。再转换成关系模式集,并指出每个关系模式的主键和外键。 解: ER图及属性、联系图为: N1隶属聘用仓库编号 仓库 仓库名 地址 聘期工资N1公司编号 公司名地址公司 职工编号 职工 性别姓名 M NM供应销售月计划数 商品号 单价商品 商品名规格供应商名供应商编号 供应商 地址商店 商店号地址 商店名月供应量 N第 20 页 这个ER图转换的关系模式如下: 商品(商品号,商品名,规格,单价) 供应商(供应商编号,供应商名,地址) 商店(商店号,商店名,地址) 供应(商品号,供应商编号,月供应量) 销售(商品号,商店号,月计划数) 6-17 假设要为银行的储蓄业务设计一个数据库,其中涉及到储户、存款、取款等信息,试设计ER模型。 解:储蓄业务主要是存款、取款业务,设计的ER图如下所示。 6-18 假设某超市公司要设计一个数据库系统来管理该公司的业务信息。该超市公司的业务管理规则如下: ⑴ 该超市公司有若干仓库,若干连锁商店,供应若干商品。 ⑵ 每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。 ⑶ 每个商店销售多种商品,每种商品可在不同的商店销售。 ⑷ 每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。每种商品可以有多种销售价格。 ⑸ 超市公司的业务员负责商品的进货业务。 试按上述规则设计ER模型。 解: 存款 N 1N 仓库 N 进货 发货M商品 库存MP NN业务员 M 具有销售价格1 P1 收银员经理 1商店 第 21 页 6-19 假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。一个系有若干专业,每个专业每年只招一个班,每个班有若干学生;一个系的学生住在同一宿舍区;每个学生可以参加多个学会,每个学会有若干学生,学生参加某学会有入会年份。试为该大学的系、学生、班级、学会等信息设计一个ER模型。 型、操作对象和操作用户等信息),DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。 数据库角色:数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过 程 约束:约束是Microsoft SQL Server提供的自动保持数据库完整性的一种方法,它定义了可输入表或表的单个列中的数据的限制条件。它是用来维护关系数据中数据的正确性和一致性、保证数据库完整性的必要条件。 规则:规则是数据库中对存储在表的列或用户定义数据类型中值的规定和限制。规则同默认值一样,也是单独存储的独立数据库对象。规则与其作用的表或用户定义数据类型是相互独立的,即表或用户定义数据类型的删除、修改不会对与之相连的规则产生影响。 完整数据库备份:完整数据库备份就是备份整个数据库。它备份数据库文件、这些文件的地址以及事务日志的某些部分(从备份开始时所记录的日志顺序号到备份结束时的日志顺序号)。 差异数据库备份:差异数据库备份是指将从最近一次完全数据库备份以后发生改变的数据进行备份。如果在完整备份后将某个文件添加至数据库,则下一个差异备份将会包括该新文件。这样可以方便地备份数据库,而无须了解各个文件。 事务日志备份:事务日志备份就是自从上一个事务以来已经发生了变化的部分。事务日志备份比完整数据库备份节省时间和空间,而且利用事务日志备份进行恢复时,可以指定恢复到某一个事务。 文件组备份:文件组备份就是对数据库中的部分文件或文件组进行备份。文件组是一种将数据库存放在多个文件上的方法,并允许控制数据库对象(比如表或视图)存储到这些文件当中的某些文件上。 7-2 试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处? 答:① 事务的原子性,是指一个事务对DB的所有操作,是一个不可分割的工作单元。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。 ② 事务的一致性,是指数据不会因事务的执行而遭受破坏。事务的一致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。 ③事务的隔离性,是指事务的并发执行与这些事务单独执行时结果一样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。 ④事务的持久性,是指事务对DB的更新应永久地反映在DB中。持久性是由DBMS的恢复管理子系统实现的。持久性能保证DB具有可恢复性。 7-3 设有两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号) 请用SQL的GRANT和REVOKE语句完成以下授权定义: ⑴ 用户王明对两个表有SELECT权限; ⑵用户李勇对两个表有INSERT和DELETE权限; ⑶ 每个职工只对自己的记录有SELECT权限; ⑷ 用户刘星对职工表有SELECT权限,对工资字段具有更新权限; ⑸ 撤销各用户所授予的权限。 解: ⑴ grant select on table 职工,部门 to 王明 ⑵ grant insert,delete on table 职工,部门 to 李勇 ⑶ grant select on 职工 when user()=name to all ⑷ grant select,update(工资) on table 职工 to 刘星 ⑸ ① 撤销用户王明对两个表有SELECT权限; revoke select on 职工,部门 from 王明; ② 撤销用户李勇对两个表有INSERT和DELETE权限; Revoke insert,delect on 职工,部门 from 李勇; ③ 撤销每个职工只对自己的记录有SELECT权限; revoke select on 职工 when user()=name from all; ④ 撤销用户刘星对职工表有SELECT权限,对工资字段具有更新权限; revoke select,update on 职工 from 刘星 7-13 简述在SQL Server 2005中完全备份、差异备份、事务日志备份以及文件和文件组备份各有什么特点? 答:完整数据库备份就是备份数据库文件、这些文件的地址以及事务日志的某些部分(从备份开始时所记录的日志顺序号到备份结束时的日志顺序号)。这是任何备份策略中都要求完成的一种备份类型。 差异数据库备份是指将从最近一次完全数据库备份以后发生改变的数据进行备份。如果在完整备份后将某个文件添加至数据库,则下一个差异备份将会包括该新文件。这样可以方便地备份数据库,而无须了解各个文件。 尽管事务日志备份就是备份自从上一个事务以来已经发生了变化的部分。事务日志备份比完整数据库备份节省时间和空间,而且利用事务日志备份进行恢复时,可以指定恢复到某一个事务。 文件组备份允许控制数据库对象(比如表或视图)存储到这些文件当中的某些文件上。数据库不会受到只存储在单个硬盘上的限制,而是可以分散到许多硬盘上。 7-14 某企业的SQL Server 2005数据库每周日12点进行一次完整备份,每天晚上24点进行一次差异备份,每小时进行一次事务日志备份,数据库在2009-7-16 6:30崩溃,应如何将其恢复从而使数据库损失最小? 答:2009年7月16日是星期四,在此前的星期日(2009年7月12日)的12点进行了一次完整备份,在2009年7月15日晚上24点又进行了自完整备份以来的差异备份,而每小时进行一次事务日志备份。恢复时,依次恢复完整备份、差异备份、事务日志备份,这样最多只会丢失2009年7月16日6点到6点30分这30分之内的数据。 器”从列表框中选择要连接的SQL Server服务器。 因篇幅问题不能全部显示,请点此查看更多更全内容