习题参考答案
第1章 数据库概述
1. 文件管理方式在管理数据方面有哪些缺陷? 答:编写应用程序不方便,数据冗余不可避免,应用程序依赖性,不支持对文件的并发访问,
数据间联系弱,难以按不同用户的愿望表示数据和无安全控制功能。
2.与文件管理相比,数据库管理有哪些优点?
答:将相互关联的数据集成在一起,具有较少的数据冗余,程序与数据相互独立,保证数据
的安全可靠,最大限度地保证数据的正确性,数据可以共享并能保证数据的一致性。
3.比较文件管理和数据库管理数据的主要区别。 答:数据库系统与文件系统相比实际上是在应用程序和存储数据的数据库之间增加了一个系
统软件,即数据库管理系统,使得以前在应用程序中由开发人员实现的很多繁琐的操作和功能,都可以由这个系统软件完成,这样应用程序不再需要关心数据的存储方式,而且数据的存储方式的变化也不再影响应用程序。而在文件系统中,应用程序和数据的存储是紧密相关的,数据的存储方式的任何变化都会影响到应用程序,因此不利于应用程序的维护。
4.数据库管理方式中,应用程序是否需要关心数据的存储位置和结构?为什么? 答:不需要。因为在数据库系统中,数据的存储位置以及存储结构保存在数据库管理系统中,从数据到物理存储位置的转换是由数据库管理系统自动完成的。
5.在数据库系统中,数据库的作用是什么?
答:在数据库系统中,数据库是存放数据的场所。
6.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据库文件吗? 答:不能。
7.数据独立性指的是什么?它能带来哪些好处? 答:数据独立性指的是数据的逻辑独立性和物理独立性。逻辑独立性带来的好处是当表达现
实世界信息的逻辑结构发生变化时,可以不影响应用程序;物理独立性带来的好处是当数据的存储结构发生变化时,可以不影响数据的逻辑组织结构,从而也不影响应用程序。
8.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?
答:数据库系统由三个主要部分组成,即数据库、数据库管理系统和应用程序。数据库是数
据的汇集,它以一定的组织形式存于存储介质上;数据库管理系统是管理数据库的系统软件,它可以实现数据库系统的各种功能;应用程序指以数据库数据为核心的应用程序。
9.在文件服务器结构和客户/服务器结构中,对数据的处理有什么区别?
1
答:在文件服务器结构中,对数据的处理主要是在客户端完成的。而在客户/服务器结构中,对数据的处理主要是在服务器端完成的。
10.应用在客户/服务器结构上的数据库管理系统是否也同样可以应用在互联网应用结构中?
答:可以。
2
第 2 章 数据库系统结构
1. 解释数据模型的概念,为什么要将数据模型分成两个层次?
答:数据模型是对现实世界数据特征的抽象。数据模型一般要满足三个条件:第一是数据模
型要能够比较真实地模拟现实世界;第二是数据模型要容易被人们理解;第三是数据模型要能够很方便地在计算机上实现。由于用一种模型同时很好地满足这三方面的要求在目前是比较困难的,因此在数据库系统中就可以针对不同的使用对象和应用目的,采用不同的数据模型。根据模型应用的不同目的,将这些模型分为概念层数据模型和组织层数据模型两大类,以方便对信息的描述。
2. 概念层数据模型和组织层数据模型分别是针对什么进行的抽象?
答:概念层数据模型是对现实世界的抽象,形成信息世界模型,组织层数据模型是对信息世
界进行抽象和转换,形成具体的DBMS支持的数据组织模型。
3. 实体之间的联系有哪几种?请为每一种联系举出一个例子。 答:实体之间的联系有一对一、一对多和多对多三种。例如:系和正系主任是一对一联系(假
设一个系只有一名正系主任),系和教师是一对多联系(假设一名教师只在一个系工作),教师和课程是多对多联系(假设一名教师可以讲授多门课程,一门课程可由多名教师讲授)。
4. 说明实体-联系模型中的实体、属性和联系的概念。 答:实体是具有公共性质的并可相互区分的现实世界对象的集合,属性是人们感兴趣的实体
或者联系的性质或特征,联系是数据和数据之间的关联关系。
5. 指明下列实体间联系的种类:
(1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)。 (2)商店和顾客。 (3)国家和首都。 答:(1)一对多。(2)多对多。(3)一对一。
6. 解释关系模型中的主键、外键的概念,并说明主键、外键的作用。 答:主键是关系表中用于惟一地确定一个元组的属性或最小属性组,其作用是使表中的每一
行数据彼此不重复且有意义。
外键是引用另一个表的主键(也可以是候选键)的表中的一个列,其作用是表示两个或多个实体之间的关联关系。
7. 指出关系的主键:教师授课表(教师号,课程号,学年,授课时数)。假设一个教师可
以在同一个学年讲授多门课程,一门课程也可以在同一个学年由多名教师讲授,但一个教师在一个学年对一门课程只讲授一次,每一次讲授有一个唯一的授课时数。 答:主键:(教师号,课程号,学年)
8. 设有如下两个关系模式,试指出每个关系模式的主键、外键,并说明外键的引用关系。
产品表(产品号,产品名称,产品价格,生产日期),其中产品名称有重复。
3
销售表(产品号,销售时间,销售数量),假设可同时销售多种产品,但同一产品在同一时间只销售一次。
答:产品表主键:产品号。销售表主键为:(产品号,销售时间)。销售表的“产品号”为引
用产品表的外键。
9.关系模型的数据完整性包含哪些内容?分别说明每一种完整性的作用。
答:数据完整性约束主要包括三大类,即实体完整性、参照完整性和用户定义的完整性。实
体完整性是保证关系数据库中所有的表都必须有主键,且主键不允许为空。参照完整性用于描述实体之间的关联关系。用户定义的完整性实际上是约束关系中属性的取值范围,即保证数据库中的数据符合现实语义。
10.数据库系统包含哪三级模式?试分别说明每一级模式的作用?
答:数据库系统包含的三级模式为:内模式、模式和外模式。外模式是对现实系统中用户感
兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是对数据库整体数据结构的子集或局部重构。模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。内模式是对整个数据库的底层表示,它描述了数据的存储结构。
11.数据库系统的两级映象的功能是什么?它带来了哪些功能? 答:数据库系统的两级映象是模式与内描述间的映象和外模式与模式间的映象。模式/内模
式的映象定义了概念视图和存储的数据库的对应关系,它说明了概念层的记录和字段在内部层次怎样表示。如果数据库的存储结构改变了,那么,必须对模式/内模式的映象进行必要的调整,使模式能够保持不变。外模式/概念模式间的映象定义了特定的外部视图和概念视图之间的对应关系,当概念模式的结构可发生改变时,也可以通过调整外模式/模式间的映象关系,使外模式可以保持不变。
12.数据库三级模式划分的优点是什么?它能带来哪些数据独立性?
答:数据库的三级模式的划分实际上将用户、逻辑数据库与物理数据库进行了划分,使彼此
之间的相互干扰减到最少。这三个模式的划分实际上带来了两个数据独立性,即物理独立性和逻辑独立性。这使得底层的修改和变化尽量不影响到上层。
4
第 3 章 SQL语言基础及数据定义功能
1. T-SQL支持哪几种数据类型?
答:支持数值型、字符型、日期时间型和货币类型四种类型。
2. Tinyint数据类型定义的数据的取值范围是多少? 答:0~255。
3. 日期时间类型中的日期和时间的输入格式是什么?
答:一般来说年、月、日中间用“/”或“-”分隔符分隔,时间中的时、分、秒用“:” 分
隔,毫秒与秒之间用“.”分隔。日期和时间中间用空格分隔,且日期和时间均括在单引号中。
4. SmallDatatime类型精确到哪个时间单位? 答:分钟。
5. 定点小数类型numeric中的p和q的含义分别是什么? 答:p是数字位个数(包括小数位数和整数位数),q是小数位数。
6. 货币数据类型精确到小数点几位? 答:4位。
7. Char(10)、nchar(10)的区别是什么?它们各能存放多少个字符?占用多少空间?
答:两者使用的编码方式不同,char类型是单字节编码方式,而且不同的字符使用的编码方不同;而nchar是双字节编码方式。Char(10)可以存放10个字符,占10个字节;nchar(10)也是可以存放10个字符,但它占20个字节空间。
8. Char(n)和varchar(n)的区别是什么?其中n的含义是什么?各占用多少空间?
答:Char(n)是定长存储的字符串类型,varchar(n)是可变长的字符串类型,它按数据的实际长度来分配空间。其中n的含义都是能够存储的字符的个数,对于char(n)类型其所占的空间固定为n个字节;对于varchar(n)其所占空间最多为n个字节。
9. 数据完整性的含义是什么? 答:数据的完整性是为了防止数据库中存在不符合应用语义的数据,为了维护数据的完整性,
数据库管理系统提供了一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。
10. 在对数据进行什么操作时,系统检查DEFAULT约束?在进行什么操作时,检查
CHECK约束?
答:在进行插入操作时检查DEFAULT约束。在进行插入和更新操作时检查CHECK约束。
11. UNIQUE约束的作用是什么?
答:UNIQUE约束的作用是保证数据的取值不重复。
5
12.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束: (1)“图书表”结构如下:
书号:统一字符编码定长类型,长度为6,主键; 书名:统一字符编码可变长类型,长度为30,非空; 第一作者:普通编码定长字符类型,长度为10,非空; 出版日期:小日期时间型;
价格:定点小数,小数部分1位,整数部分3位。 (2)“书店表”结构如下:
书店编号:统一字符编码定长类型,长度为6,主键; 店名:统一字符编码可变长类型,长度为30,非空;
电话:普通编码定长字符类型,8位长,每一位的取值均是0~9的数字; 地址:普通编码可变长字符类型,40位长。 邮政编码:普通编码定长字符类型,6位长。 (3)“图书销售表”结构如下:
书号:统一字符编码定长类型,长度为6,非空; 书店编号:统一字符编码定长类型,长度为6,非空; 销售日期:小日期时间型,非空; 销售数量:小整型,大于等于1。
主键为(书号,书店编号,销售日期);
其中“书号”为引用“图书表”的“书号”的外键; “书店编号”为引用“书店表”的“书店编号”的外键。 答:
CREATE TABLE 图书表 ( 书号 nchar(6) primary key, 书名 nvarchar(30) not null, 第一作者 char(10) not null, 出版日期 smalldatetime, 价格 numeric(4,1))
CREATE TABLE 书店表 (
书店编号 nchar(6) primary key, 店名 nvarchar(30) not null,
电话 char(8) check (电话 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 地址 varchar(40), 邮政编码 char(6))
CREATE TABLE 图书销售表 ( 书号 nchar(6) not null,
书店编号 nchar(6) not null,
销售日期 smalldatetime not null,
销售数量 smallint check(销售数量>=1), primary key(书号,书店编号,销售日期), foreign key(书号) references 图书表(书号),
foreign key(书店编号) references 书店表(书店编号))
6
13.为第12题的图书表添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。
答:ALTER TABLE 图书表
ADD 印刷数量 int check (印刷数量>=1000)
14.删除第12题的“书店表”中的“邮政编码”列。 答:ALTER TABLE 书店表
DROP COLUMN 邮政编码
15.将第12题的“图书销售表”中的“销售数量”列的数据类型改为整型。 答:ALTER TABLE 图书销售表
ALTER COLUMN 销售数量 int
16.索引的作用是什么?分为哪几种类型?
答:索引的作用是为了加快数据的查询速度。索引分为聚集索引和非聚集索引两种。
17.在一个表上可以创建几个聚集索引?可以创建多个非聚集索引吗? 答:在一个表上只能创建一个聚集索引。可以创建多个非聚集索引。
18.聚集索引一定是唯一索引,对吗?反之呢?
答:不对。唯一索引可以是聚集的也可以是非聚集的。
19.在建立聚集索引时,系统是真正将数据按聚集索引列进行物理排序,对吗?在建立非聚
集索引时呢?情况又如何?
答:对。但在建立非聚集索引时,系统并不物理地调整数据的排列顺序。
20.在第12题的图书表的“第一作者”列上建立一个非聚集索引。 答:CREATE INDEX indAuthor ON 图书表 (第一作者)
21.在第12题的书店表的“电话”列上建立一个聚集的唯一索引。 答:CREATE UNIQUE CLUSTERED INDEX indPhone
ON 书店表(电话)
22.在第12题的图书销售表的“书号”和“销售日期”两个列上建立一个非聚集索引。 答:CREATE INDEX indSale ON 图书销售表 (书号, 销售日期)
7
第4章 数据操作
1.查询SC表中的全部数据。 答:select * from SC
2.查询计算机系学生的姓名和年龄。
答:select sname,sage from student where sdept = '计算机系'
3.查询成绩在70~80分的学生的学号、课程号和成绩。
答:select sno,cno,grade from sc on where grade between 70 and 80
4.查询计算机系年龄在18~20岁的男学生的姓名和年龄。 答:select sname,sage from student
where sdept = '计算机系' and sage between 18 and 20 and ssex = '男'
5.查询C001课程的最高分。
答:select max(grade) from sc where cno = 'C001'
6.查询计算机系学生的最大年龄和最小年龄。
答:select max(sage) as max_age, min(sage) as min_age from student where sdept = '计算机系'
7.统计每个系的学生人数。
答:select sdept,count(*) from student group by sdept
8.统计每门课程的选课人数和考试最高分。
答:select cno,count(*),max(grade) from sc group by cno
9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
答:select sno,count(*), sum(grade) from sc group by sno order by count(*) asc
10.查询总成绩超过200分的学生,要求列出学号和总成绩。
答:select sno,sum(grade) from sc group by sno having sum(grade) > 200
11.查询选修C002课程的学生的姓名和所在系。
答:select sname,sdept from student s join sc on s.sno = sc.sno where cno = ' C002'
12.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。 答:select sname,cno,grade from student s join sc on s.sno = sc.sno where grade > 80 order by grade desc
13.查询哪些课程没有学生选修,要求列出课程号和课程名。
8
答:select c.cno,cname from course c left join sc on c.cno = sc.cno
where sc.cno is null
14.查询计算机系哪些学生没有选课,列出学生姓名。
答:select sname from student s left join sc on s.sno = sc.sno Where sdept = '计算机系' and sc.sno is null
15.用子查询实现如下查询:
(1)查询选修C001课程的学生的姓名和所在系。
答:select sname,sdept from student where sno in( select sno from sc where cno = ' C001')
(2)查询通信工程系成绩80分以上的学生的学号和姓名。 答:select sno,sname from student where sno in( select sno from sc where grade > 80) and sdept = '通信工程系'
(3)查询计算机系考试成绩最高的学生的姓名。
答:select sname from student s join sc on s.sno = sc.sno where sdept = '计算机系'
and grade = (select max(grade) from sc join student s on s.sno = sc.sno
where sdept = '计算机系')
(4)查询年龄最大的男学生的姓名和年龄。 答:select sname,sage from student
Where sage = (select max(sage) from student and ssex = '男') and ssex = '男'
(5)查询C001课程的考试成绩高于该课程平均成绩的学生的学号和成绩。 答:select sno,grade from sc where cno = ' C001'
And grade > (select avg(grade) from sc where cno = ' C001')
16.创建一个新表,表名为test_t,其结构为(COL1, COL 2, COL 3),其中, COL1:整型,允许空值。
COL2:字符型,长度为10,不允许空值。 COL3:字符型,长度为10,允许空值。
试写出按行插入如下数据的语句(空白处表示空值)。
COL1 1 2 COL2 B1 B2 B3 COL3 C2 答:create table test_t ( COL1 int,
COL2 char(10) not null,
9
COL3 char(10) )
insert into test_t values(NULL, 'B1', NULL) insert into test_t values(1, 'B2', 'C2')
insert into test_t(COL1, COL2) values(2, 'B3')
17.删除修课成绩小于50分的学生的选课记录。 答:delete from sc where grade < 50
18.将所有选修C001课程的学生的成绩加10分。
答:update sc set grade = grade + 10 where cno = 'C001'
19.将计算机系所有选修“计算机文化学”课程的学生的成绩加10分。 答:update sc set grade = grade + 10 where sno in(
select sno from student where sdept = '计算机系') and cno in(
select cno from course where cname = '计算机文化学')。
20.试说明使用视图的好处。
答:使用视图能够带来如下好处:
? 简化数据查询语句:用户可以将复杂的查询语句封装在视图中,这样以后用户在使
用相同的查询时,只需对视图进行查询即可。
? 使用户能从多角度看到同一数据:视图机制能使不同的用户以不同的方式看待同一
数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常重要的。 ? 提高了数据的安全性:使用视图可以定制允许用户查看哪些数据并屏蔽掉敏感的数
据,从而提高数据库数据的安全性。
? 提供一定程度的逻辑独立性:视图对应数据库三级模式中的外模式,因此,可以将
用户对数据的操作限制在视图上,而不直接对模式进行操作,这样当模式发生变化时,视图可以不变。
21.使用视图可以加快数据的查询速度,这句话对吗?为什么?
答:不对。使用视图不但不会加快对数据的查询速度,而且还会降低数据查询速度。因为通
过视图查询数据时,要先将这个查询转换为对基本表的查询,有时这个转换是比较复杂的。因此,通过视图查询数据比直接对基本表查询要慢。
22.写出创建满足下述要求的视图的SQL语句。
(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。 答:CREATE VIEW V1
AS
SELECT S.Sno, Sname, Sdept, C.Cno, Cname, Ccredit FROM Student S JOIN SC ON S.Sno = SC.Sno JOIN Course C ON C.Cno = SC.Cno
(2)查询学生的学号、姓名、选修课程名和考试成绩。
10
答:CREATE VIEW V2
AS
SELECT S.Sno, Sname, Cname, Grade
FROM Student S JOIN SC ON S.Sno = SC.Sno
JOIN Course C ON C.Cno = SC.Cno
(3)统计每个学生的选课门数的视图,要求列出学生学号和选课门数。 答: CREATE VIEW V3
AS
SELECT Sno, Count(*) AS total FROM SC GROUP BY Sno
(4)统计每个学生的修课总学分的视图,要求列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学分)。 答: CREATE VIEW V4
AS
SELECT Sno, SUM(Ccredit) sum_credit
FROM SC JOIN Course C ON C.Cno = SC.Cno
WHERE Grade >= 60 GROUP BY Sno
23.利用第22题建立的视图,完成如下查询:
(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。 答:SELECT Sname, Cname, Grade FROM V2 WHERE Grade >= 90
(2)查询选课门数超过3门的学生的学号和选课门数。 答:SELECT Sno, total FROM V3 WHERE total > 3
(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。 答:SELECT Sname, total FROM V3 JOIN Student S on S.Sno = V3.Sno
WHERE total > 3 and Sdept = '计算机系'
(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。 答:SELECT S.Sno, Sname, Sdept, sum_credit
FROM Student S JOIN V4 ON S.Sno = V4.Sno WHERE sum_credit > 10
(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
答:SELECT Sname, Sage, Sdept, sum_credit
FROM Student S JOIN V4 ON S.Sno = V4.Sno WHERE sum_credit > 10 and Sage >= 20
24.修改22题(4)定义的视图,使其查询每个学生的学号、姓名、所在系、所选全部课程
11
的总学分以及总的选课门数。 答:CREATE VIEW V4_1
AS
SELECT Sno, SUM(Ccredit) sum_credit, COUNT(*) Total FROM SC JOIN Course C ON C.Cno = SC.Cno
GROUP BY Sno
ALTER VIEW V4 AS
SELECT S.Sno, Sname, Sdept, sum_credit, Total
FROM Student S JOIN V4_1 ON S.Sno = V4_1.Sno
12
第 5 章 关系数据库规范化理论
1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么?
答:关系规范化中的操作异常有插入异常、更新异常和删除异常,这些异常是由于关系中存
在不好的函数依赖关系引起的。消除不良函数依赖的办法是进行模式分解,即将一个关系模式分解为多个关系模式。
2.第一范式、第二范式和第三范式的关系的定义是什么?
答:不包含非原子项属性的关系就是第一范式的关系;对于第一范式的关系,如果此关系中
的每个非主属性都完全函数依赖于主键,则此关系属于第二范式;对于第二范式的关系,如果所有的非主属性都不传递依赖于主键,则此关系就是第三范式的。
3.什么是部分依赖?什么是传递依赖?请举例说明。
答:部分依赖关系是指某个属性只由构成主键的部分列决定,而和另一些列无关。例如对关
系:学生选课(学号,姓名,课程号,成绩),此关系的主键是(学号,课程号),而“姓名”列只由“学号”决定,与“课程号”无关,这就是部分依赖关系。 传递依赖指的是某个非主键属性是由另一个非主键属性决定的,而这个非主键属性再由
主键决定。例如对关系:学生(学号、姓名、所在系,系主任),此关系的主键为(学号),而“系主任”由“所在系”决定,“所在系”又由“学号”决定,因此“系主任”对“学号”是传递依赖关系。
4.第三范式的表是否一定不包含部分依赖关系? 答:是的。 5.对于主键只由一个属性组成的关系,如果它是第一范式关系,则它是否一定也是第二范式关系? 答:是的。因为如果一个关系的主键只由一个属性组成,则此关系中一定不会存在部分依赖
关系。
6.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。设一名学生可以选修多门课程,一门课程可以被多名学生选修。一名学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。
答:候选键为:(学号,课程号),它也是此关系模式的主键。由于存在函数依赖:
学号 → 姓名,课程号 → 课程名 因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下: 学生表(学号,姓名,所在系,性别),主键为“学号”,已属于第三范式。 课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。 选课表(学号,课程号,成绩),主键为(学号,课程号),已属于第三范式
7.设有关系模式:学生表(学号,姓名,所在系,班号,班主任,系主任),其语义为:一名学生只在一个系的一个班学习,一个系只有一名系主任,一个班只有一名班主任,一个系可以有多个班。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范
13
式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。 答:候选键为:学号,它也是此关系模式的主键。
由于不存在非主键属性对主键的部分依赖关系,因此,此关系模式属于第二范式的,但由于存在如下函数依赖:
学号 → 班号, 班号 → 班主任, 因此,存在非主键属性对码的传递依赖关系,同样以及
学号 → 所在系,所在系 → 系主任,因此,此关系模式不是第三范式的。对其分解后的结果为: 学生基本表(学号,姓名,所在系,班号),主键为“学号”,“班号”为引用班级表表的“班号”的外键,“所在系” 为引用系表表的“系名”的外键。 班级表(班号,班主任),主键为“班号”。 系表(系名,系主任),主键为“系名”。
8.设有关系模式:授课表(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。指出此关系模式的候选键,判断此关系模式属于第几范式;若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。
答:此关系模式的候选键为(课程号,授课教师号),它们也是主键。由于存在函数依赖:
课程号 → 课程名,授课教师号 → 教师名 因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下: 课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。 教师表(教师号,教师名),主键为“教师号”,已属于第三范式。 授课表(课程号,授课教师号,授课时数),主键为(课程号,教师号),已属于第三范式。
14
第6章 数据库设计
1.试说明数据库设计的特点。
答:数据库设计是和用户的业务需求紧密相关的,因此它具有如下特点:
? 综合性。数据库设计涉及的面很广,它需要包含计算机专业知识及业务系统专业知
识;同时它还要解决技术及非技术两方面的问题。 (1) 静态结构设计与动态行为设计是分离的。静态结构设计是指数据库的模式结构设
计,包括概念结构、逻辑结构和存储结构;动态行为设计是指应用程序设计,包括功能组织、流程控制等。数据库设计的主要精力首先是放在数据结构的设计上。
2.简述数据库的设计过程。
答:数据库设计一般包含6个阶段: 需求分析,概念结构设计,逻辑结构设计,物理设计,
数据库实施以及数据库运行和维护。
3.数据库结构设计包含哪几个过程?
答:数据库结构设计包括设计数据库的概念结构、逻辑结构和存储结构。
4.需求分析中发现事实的方法有哪些?
答:常用的发现事实的方法有检查文档、面谈、观察业务的运转、研究和问卷调查等。
5.概念结构应该具有哪些特点? 答:概念结构应具备如下特点:
? 有丰富的语义表达能力。 ? 易于交流和理解。 ? 易于更改。
? 易于向各种数据模型转换,易于导出与DBMS有关的逻辑模型。
6.概念结构设计的策略是什么?
答:概念结构设计的策略主要有:自底向上、自顶向下、由里向外、混合策略。
7.什么是数据库的逻辑结构设计?简述其设计步骤。
答:逻辑结构设计的任务是把概念结构设计阶段设计好的基本E-R模型转换为具体的数据
库管理系统支持的数据模型,也就是导出特定的DBMS可以处理的数据库逻辑结构。它一般包含两个步骤:第一是:将概念模型转换为某种组织层数据模型;第二是:对数据模型进行优化。
8.把E-R模型转换为关系模式的转换规则有哪些? 答:一般规则为:
(1)一个1∶1联系可以转换为一个独立的关系模式,也可以与任意一端所对应的关系模式
合并。如果可以转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,每个实体的码均是该关系模式的候选键。如果是与联系的任意一端实体所对应的关系模式合并,则需要在该关系模式的属性中加入另一个实体的码和联系本身的属性。 (2)一个1∶n联系可以转换为一个独立的关系模式,也可以与n端所对应的关系模式合并。
15
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,且关系模式的码为n端实体的码。如果与n端对应的关系模式合并,则需要在该关系模式中加入1端实体的码以及联系本身的属性。
(3)一个m∶n联系必须转换为一个独立的关系模式。与该联系相连的各实体的码以及联
系本身的属性均转换为此关系模式的属性,且关系模式的主键包含各实体的码。 (4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相
连的各实体的码以及联系本身的属性均转换为此关系模式的属性,而此关系模式的主键包含各实体的码。
(5)具有相同主键的关系模式可以合并。
9.数据模型的优化包含哪些方法? 答:数据模型的优化的方法为: (1) 确定各属性间的数据依赖。 (2) 对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。 (3) 判断每个关系模式的范式,根据实际需要确定最合适的范式。 (4) 根据需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确
定是否要对某些模式进行分解或合并。
10.设有如图6-15所示的两个E-R模型,分别将它们转换为关系模式,并指出每个关系模式的主键和外键。 答:对图6-15(a):
图书表(书号,书名,出版日期,作者),主键为“书号” 读者表(读者编号,读者姓名,联系电话,单位),主键为“读者编号”。 借阅表(书号,读者编号,借阅日期),主键为(书号,读者编号,借书日期),“书号”为引用图书表的“书号”的外键,“读者编号”为引用读者表的“读者编号”的外键。
对图6-15(b):
顾客表(顾客号,顾客名,联系电话),主键为“顾客号”。 销售人员表(职工编号,职工名称,所在部门),主键为“职工编号”。 商品表(商品编号,商品名称,商品分类,库存量),主键为“商品编号”。 订购表(职工编号,顾客号,商品编号,订购日期,订购数量),主键为(职工编号,顾客号,商品编号),“职工编号”为引用销售人员表的“职工编号”的外键,“顾客号”为引用顾客表的“顾客号”的外键,“商品编号”为引用商品表的“商品编号”的外键。
16
第7章 数据库保护
1.试说明事务的概念及四个特征。
答:事务是用户定义的数据操作系列,这些操作是一个完整的工作单元,一个事务内的所有
语句可以作为一个整体,要么全部执行,要么全部不执行。
事务具有四个特性:原子性、一致性、隔离性和持久性。原子性是指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。一致性是指事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。隔离性是指数据库中一个事务的执行不能被其他事务干扰。持久性是指事务一旦提交,则其对数据库中数据的改变就是永久的。
2.事务处理模型有哪两种?
答:有显式事务和隐式事务两种。隐式事务是每一条数据操作语句都自动地成为一个事务,
显式事务是有显式的开始和结束标记的事务。
3.在数据库中为什么要有并发控制?
答:因为数据库中的数据是共享的资源,因此,会有很多用户同时使用数据库中的数据,也
就是在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。而事务之间的相互干扰会产生不一致的数据,而这在数据库的使用中是不允许的。因此,在大型数据库中一定要有并发控制机制。
4.并发控制的措施是什么?
答:并发控制的措施是加锁,加锁是一种并行控制技术,用于限制事务内和事务外对数据的
操作。
5.设有三个事务:T1、T2和T3,其所包含的动作为:
T1:A = A + 2;T2:A = A * 2;T3:A = A ** 2(注:A**2表示A的平方) 设A的初值为1,若这三个事务并行执行,则可能的调度策略有几种?A的最终结果分别是什么?
答:可能的调度策略有: T1→T2→T3:A=36
T1→T3→T2:A=18 T2→T1→T3:A=16 T3→T1→T2:A=6 T2→T3→T1:A=6 T3→T2→T1:A=4
6.当某个事务对某段数据加了S锁之后,在此事务释放锁之前,其他事务还可以对此段数据添加什么锁?
答:可以添加S锁。
17
7.什么是死锁?
答:当两个事务彼此互相等待对方先释放自己所需要的资源时,就产生了死锁。
8.怎样保证多个事务的并发执行是正确的?
答:多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,而两段锁协议是实现可串行化调度的充分条件。因此,只要遵从两段锁协议,就能保证多个事务的并发执行是正确的。
9.数据库故障大致分为几类?
答:数据库故障大致可以分为如下几类:事务内部的故障、系统故障和其他故障。
10.数据库备份的作用是什么?
答:备份数据库是为了当数据库出现故障时,避免或减少数据的丢失。
18
第8章 SQL Server 2000基础
1.SQL Server 2000企业版提供了哪些服务?每个服务的作用是什么? 答:SQL Server 2000企业版一共提供了四个服务,分别是:SQL Server、SQL Server Agent、
DTC和Microsoft Search。SQL Server服务是SQL Server 2000的最核心的服务,它直接管理和维护数据库,负责处理所有来自客户端的SQL语句并管理服务器上构成数据库的所有文件,同时还负责处理存储过程,并将执行结果返回给客户端。SQL Server Agent服务能够根据系统管理员预先设定好的计划自动执行相应的功能。同时,它还能对系统管理员设定好的错误等特定事件自动进行报警,而且还能通过电子邮件等方式把系统存在的各种问题发送给指定的用户。DTC服务是一个事务管理器,在DTC支持下,客户可以在一个事务中访问不同服务器上的数据库,并且能保证事务的完整性。Microsoft Search服务,能够对字符数据进行全文检索。
2.SQL Server 2000提供了几个版本,每个版本分别适用于哪些操作系统?
答:SQL Server 2000共提供了企业版、标准版、开发版和个人版四个版本。企业版和标准
版可以安装在服务器操作系统上,比如WinNT Server 4.0、Windows 2000 Server。开发版和个人版可以安装在Windows 98或WinNT 4.0及其以上的任何操作系统版本中。
3.SQL Server的实例名的作用是什么? 答:在SQL Server中,一个实例名代表一个SQL Server系统。当在一台机器上安装多个SQL
Server时,可以用实例名来区别它们。
4.SQL Server的默认安装位置是什么?
答:默认情况下,SQL Server的程序文件和数据文件的安装位置都是 C:\\Program
Files\\Microsoft SQL Server\\。
5.要启动SQL Server 2000服务,需使用哪个工具? 答:使用SQL Server的“服务管理器”工具。
6.要使用SQL Server 2000,必须至少启动哪个服务? 答:必须至少启动“SQL Server”服务。
7.语句批的结束标记是什么? 答:GO
8.SQL语句脚本文件的扩展名是什么? 答:是“.sql”。
9.T-SQL支持的变量有几种?分别用什么前缀来标识?
答:两种:全局变量和局部变量,全局变量用“@@”来标识,局部变量用“@”来标识
19
第9章 数据库及数据库对象的创建与管理
1.SQL Server数据库由哪两类文件组成?这些文件的推荐扩展名分别是什么?
答:SQL Server数据库由数据文件和日志文件组成。数据文件又包含主数据文件和辅助数据
文件,主数据文件的扩展名为:.mdf,辅助数据文件的扩展名为:.ndf。日志文件的扩展名为:.ldf。
2.数据文件和日志文件的作用分别是什么?
答:在SQL Server中,数据文件用于存放数据库数据。日志文件记录页的分配和释放以及
对数据库数据的修改操作。
3.在SQL Server中,为什么要将数据文件分为主数据文件和辅助数据文件? 答:在SQL Server中,主数据文件包含数据库的启动信息以及数据库数据,每个数据库只能
包含一个主数据文件。而对于辅助数据文件,一个数据库可以有多个辅助数据文件。由于有些数据库可能非常大,一个主数据文件可能存放不下,因此就需要有一个和多个辅助数据文件来存储这些数据,而且辅助文件还可以建立在与主数据文件不同的磁盘驱动器上,这样就可以利用多个磁盘上的存储空间,并提高数据存取的并发性。
4.数据文件和日志文件的默认存储位置是哪里?
答:数据文件和日志文件的默认存放位置为:C:\\Program Files\\Microsoft SQL
Server\\MSSQL\\Data文件夹。
5.在SQL Server 2000中,数据的存储单位是什么?有多大?
答:在SQL Server 2000中,数据的存储单位是页,一页为连续的8KB空间。
6.在定义数据文件和日志文件时,可以指定哪几个属性?
答:在定义数据库的数据文件和日志文件时,可以指定如下属性:
? 文件名及其位置。 ? 文件初始大小。 ? 文件增长方式。 ? 文件最大大小。
7.在企业管理器中扩大数据库空间有哪两种方法?
答:在企业管理器中扩大数据库空间有两种方法,一种是扩大数据库中已有文件的大小,另
一种是为数据库添加新的文件。
8.写出创建满足如下要求的数据库的T-SQL语句: (1)数据库的名称为:教师授课管理数据库。
(2)数据文件的逻辑文件名为Teachers_dat,物理文件名为Teachers.mdf,存储在D:\\Test目录下(假设此目录已建好)。 (3)文件的初始大小为:5MB。
(4)增长方式为自动增长,每次增加1MB,最大大小无限制。 (5)日志文件的逻辑文件名称为Teachers_log,物理文件名为Teachers.ldf,也存储在D:\\Test
20
目录下。
(6)日志文件的初始大小为:2MB。
(7)日志文件的增长方式为自动增长,每次增加15%,最多增加到5MB。 答:
CREATE DATABASE 教师授课管理数据库 ON
( NAME =Teachers_dat,
FILENAME = 'D:\\Test\\Teachers.mdf', SIZE = 5,
FILEGROWTH = 1 ) LOG ON
( NAME =Teachers_log,
FILENAME = 'D:\\Test\\Teachers.ldf ', SIZE = 2,
MAXSIZE = 5,
FILEGROWTH = 15% )
第10章 安全管理
1.通常情况下,数据库中的权限划分为哪几类? 答:一类是对数据库管理系统进行维护的权限,另一类是对数据库中的对象和数据进行操作
的权限。这类权限又可以分为两种,一种是对数据库对象的权限,包括创建、删除和修改数据库对象;另一种是对数据库数据的操作权先,包括对表、视图数据的增、删、改、查权。
2.数据库中的用户按其操作权限可分为哪几类,每一类的权限是什么?
答:数据库中的用户按其操作权限可分为三类,分别是:数据库系统管理员、数据库对象拥
有者和普通用户。数据库系统管理员在数据库中具有全部的权限;数据库对象拥有者对其所拥有的对象具有一切权限;普通用户具有对数据库数据的增、删、改、查权。
3.SQL Server 2000的安全验证过程是什么?
答:一个用户如果要访问SQL Server数据库中的数据,必须要经过三个认证过程。第一个
认证过程是身份验证,使用登录帐号来标识用户,身份验证只验证用户连接到SQL Server数据库服务器的资格。第二个认证过程是当用户访问数据库时,必须具有对具体数据库的访问权,即验证用户是否是数据库的合法用户。第三个认证过程是当用户操作数据库中的数据或对象时,必须具有所要进行的操作的操作权,即验证用户是否具有操作许可。
4.SQL Server 2000的登录账户的来源有哪两种? 答:SQL Server的登录帐号的来源有两种类型:
? Windows授权用户:来自于Windows的用户或组。 ? SQL授权用户:来自于非Windows的用户。
5.SQL Server 2000的权限有几种类型?
答:在SQL Server 2000 中,权限分为对象权限、语句权限和隐含的权限三种。对象权限是
21
指用户对数据库中的表、视图等对象所包含的数据的操作权限,语句权限是指是否允许执行与创建数据库对象有关的操作的权限,隐含权限是指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。
6.权限的管理包含哪些内容?
答:权限的管理包含如下三个内容:
? 授予权限:允许用户或角色具有某种操作权限。
? 收回权限:不允许用户或角色具有某种操作权限,或者收回曾经授予的权限。 ? 拒绝访问:拒绝某用户或角色具有某种操作权限。
7.数据库中的角色的作用是什么?
答:在数据库中,为便于对用户及权限的管理,将一组具有相同权限的用户组织在一起,这
一组具有相同权限的用户就称为角色。
8.在SQL Server 2000中,角色分为哪几种?
答:在SQL Server 2000中,角色分为系统预定义的固定角色和用户自己定义的用户角色。
系统角色又根据其作用范围的不同而被分为固定的服务器角色和固定的数据库角色。
9.用户定义的角色的作用是什么?
答:是为了简化用户的权限管理。有了用户定义的角色,就可以针对角色来授权,而不用直
接对每个具体的数据库用户权限。
10.系统管理员角色的名字是什么? 答:sysAdmin。 11.若要让某个用户在某个数据库中具有全部的操作权,应将其放置在哪个角色中最合适? 答:db_owner。
12.若要让某个用户在某个数据库中具有全部数据的增、删、改的权限,应将其放置在哪个角色中最合适? 答:db_datawriter
13.与其他系统定义的角色相比,public角色的特殊性是什么?
答:其特殊性在于:数据库中的每个用户都自动地是public数据库角色的成员,用户不能从
public角色中添加和删除成员,而且,可以对这个角色授权。
14.哪种情况下应该给public角色授权?
答:如果想让数据库中的全体用户都具有某个特定的权限,则应该将该权限授予public。
15.写出授予用户u1具有对课程表的插入和删除权SQL语句。 答:Grant Insert, Delete on Course to u1
16.写出收回用户u1对课程表的删除权的SQL语句。 答:Revoke Delete on Course from u1
22
17.写出拒绝用户u1获得对课程表的修改权的SQL语句。 答:Deny Update on Course to u1
18.写出授予用户u1创建表的权限的SQL语句。 答:Grant Create Table to u1
19.写出收回用户u1创建表的权限的SQL语句。 答:Revoke Create Table from u1
23
第11章 备份和恢复数据库
1.在确定用户数据库的备份周期时,应考虑哪些因素? 答:在确定用户数据库的备份周期时,应考虑用户数据的更改频率和用户能够允许丢失多少
数据。如果数据修改比较少,或者用户可以忍受的数据丢失时间比较长,则可以使备份的间隔长一些,否则的话,可以让备份的时间间隔短一些。
2.SQL Server的备份设备是一个独立的物理设备吗?
答:备份设备不是一个单独的物理设备,它是指在磁盘和磁带上建立的一个逻辑设备。
3.在创建备份设备时需要指定备份设备的大小吗?备份设备的大小是由什么决定的?
答:在创建备份设备时不需要指定备份设备的大小,它的大小是由备份内容的多少决定的,
而且备份设备的大小是随着备份内容的增加自动增长的。
4.SQL Server 2000提供了几种备份方式?
答:SQL Server支持四种备份方式,即完全备份、差异备份、事务日志备份以及文件和文
件组备份。
5.事务日志备份对数据库故障还原模型有什么要求?
答:事务日志备份要求数据库的故障还原模型不能是“简单”的。
6.第一次对数据库进行备份时,必须使用哪种备份方式?
答:第一次对数据库进行备份时,必须要使用“完全备份”方式。
7.差异备份备份的是哪段时间的哪些内容?
答:差异备份备份的是从上次完全备份之后,数据库中被修改的部分。
8.事务日志备份备份的是哪段时间的哪些内容? 答:日志备份备份的是从上次备份之后的日志内容。
9.差异备份备份数据库日志吗?
答:差异备份不但备份数据,也备份日志。
10.恢复数据库时,对恢复的顺序有什么要求?
答:在恢复数据库时必须要遵守严格的顺序。恢复数据库的顺序为:(1)恢复最近的完全数
据库备份。(2)恢复完全备份之后的最近的差异数据库备份(如果有的话)。(3)按日志备份的先后顺序恢复自完全或差异数据库备份之后的所有日志备份。
11.SQL Server在备份数据库时允许用户访问数据库吗?在恢复数据库时呢? 答:在备份数据库时允许用户访问数据库,在恢复数据库时不允许。
24
第12章Visual Basic开发环境及数据访问接口
1.Visual Basic 6.0的特点有哪些?
答:Visual Basic 6.0的特点:面向对象的可视化程序设计工具,事件驱动的编程机制,开放的数据库访问功能,充分利用Windows资源。
2.若要完全安装Visual Basic 6.0企业版,需要多少硬盘空间?典型安装呢? 答:完全安装:147MB;典型安装:120MB。
3.Visual Basic工程至少包含几个文件?分别是什么? 答:至少包含两个文件:一个窗体文件和一个工程文件。
4.在Visual Basic 6.0中,什么是设计模式?什么是运行模式?
答:设计模式是进行用户界面的设计和代码的编写的模式。运行模式是运行应用程序的模式,这种模式不能编写代码,也不可以对界面进行编辑。
5.如何进入代码编辑器窗口?
答:在设计好应用程序界面之后,通过下列4种方式之一,均可进入代码编辑器窗口。
? 双击窗体中的任何地方。
? 在窗体上单击鼠标右键,在弹出的菜单中选择“查看代码”命令。 ? 单击“工程资源管理器”窗口中的“查看代码”按钮。 ? 执行“视图”菜单中的“代码窗口”命令。
6.如果希望在编写VB代码时系统能自动检查语法,应如何设置?
答:单击“工具”菜单上的“选项”命令,在弹出的“选项”窗口中单击“编辑器”选项卡,在此选项卡上勾选“自动语法检测”选项。
7.数据绑定控件的作用是什么?具有哪些属性的控件是数据绑定控件? 答:能够实现将结果集中的数据显示在屏幕上,而且用户还可以通过数据绑定控件实现对数据库数据的增、删、改等操作。只有具有DataSource属性的控件是数据绑定控件。
8.通用的数据访问接口有哪几个?
答:常用的通用数据访问接口有ODBC和OLE DB两个。
9.ODBC接口和OLE DB接口的主要区别是什么?ADO与OLE DB的关系是什么?
答:ODBC是支持访问关系型数据的标准访问接口,而OLE DB可以访问关系型和非关系数据的标准接口。
OLE DB是面向API编程的,为了使OLE DB能够完成这些操作,开发者需要调用许多不同的API。ADO是建筑在OLE DB之上的高层接口集,是介于OLE DB底层接口和应用程序之间的接口,它避免了开发人员直接使用OLE DB底层接口的麻烦。ADO简化了OLE DB模型,它是面向对象的API,它只需开发者掌握几个简单对象的方法和属性就可以了。
25
第13章 ADO数据控件与数据窗体向导
1.使用ADO数据控件建立数据源时,需要设置它的哪些属性,每个属性的作用是什么? 答:需要设置ADO数据控件的ConnectionString属性、CommandType属性和RecordSource
属性。ConnectionString属性用于建立与数据源的连接,CommandType属性指明命令的类型,即要访问的数据的来源。RecordSource属性用于设置ADO结果集的内容。
2.要使对ADO数据控件属性的设置生效,应该使用它的哪个方法。 答:应使用它的Refresh方法。
3.Recordset对象的BOF和EOF属性的作用是什么?
答:Recordset对象的BOF和EOF属性都是布尔值。当结果集中记录的当前行指针移到了
第一条记录的前边时,BOF为真,否则为假。当结果集中记录的当前行指针移到了最后一条记录的后边时,EOF为真,否则为假。因此,这两个属性用于判断结果集中的当前行指针是否移出了结果集范围。
4.Recordset对象的哪个属性可以得到结果集中的记录个数? 答:使用Recordset对象的RecordCount属性。
5.Recordset对象的Move方法组都包含哪些方法?每个方法的含义是什么?
答:RecordSet对象的Move方法组包含MoveFirst方法、MovePrevious方法、MoveNext方
法和MoveLast方法。MoveFirst方法的含义是将当前行记录指针移到结果集中的第一行。MovePrevious方法的含义是将当前行记录指针向前移动一行。MoveNext方法的含义是将当前行记录指针向后移动一行。MoveLast方法的含义是将当前行记录指针移到结果集中的最后一行。
6.如果要在数据库中插入一条新记录,应该使用Recordset对象的哪些方法实现?
答:如果要在数据库中插入一条新记录,应该首先使用AddNew方法,然后再Update方法,
或者对当前行记录指针作一个移动操作。使新插入的数据成为数据库中的永久记录。 7.Recordset对象的Update方法只能用于将更改后的记录保存到数据库中,这个说法对吗? 答:不对。Update方法不仅用于将更改后的记录保存到数据库中,而且还可以将新插入的记录保存到数据库中。
8.Recordset对象的CancelUpdate方法的作用是什么?
答:CancelUpdate方法用于取消新添加的记录或对当前记录所做的修改。
26
第14章ADO对象编程
1.ADO对象模型包括几个对象?每个对象的基本作用是什么?
答:ADO对象模型主要包括:Connection对象、Command对象、Recordset对象、Field对象、Parameter对象和Error对象。
Connection对象表示到数据库的连接;Command对象代表对数据源执行的命令;Recordset对象代表从数据提供者获取的数据记录集;Field对象表示记录集中数据的某个单独列;Parameter对象表示Commad对象的一个独立参数;Error对象记录数据操作过程中所发生的错误信息。
2.Connection对象用于连接数据源的属性是哪个? 答:ConnectionString。
3.Command对象的命令类型有几种?每种类型的值分别是什么? 答:Command对象的命令类型主要有四种,分别是:
? adCmdText,指定CommandText的内容是一个文本,即SQL语句。 ? adCmdTable,指定CommandText的内容是一个表名。
? adCmdStoredProc,指定CommandText的内容是一个存储过程名。 ? adCmdUnknown,默认值,表示命令类型未知。
4.Command对象的执行一定会产生结果集吗?执行什么样的语句才会产生结果集?其结果集保存在哪里?
答:不一定。只有在执行查询语句时才产生结果集,结果集放置在Recordset对象中。
5.Recordset对象的游标有几种类型?每种类型的特点是什么? 答:Recordset对象支持四种游标类型,分别为:
? 动态游标(adOpenDynamic),能够反映所有用户对数据的修改,支持记录集向前和向
后的记录移动操作。
? 静态游标(adOpenStatic),支持记录集向前和向后的操作,但不能反映其他用户对数据
的修改。
? 键集游标(adOpenKeyset),介于动态游标和静态游标之间。它不允许用户看到由其他
用户完成的对数据的增加和删除的记录,但可以看到其他用户更改的数据。
? 仅向前游标(adOpenForwardonly),默认值。仅支持记录集记录的向前移动操作,其他与静态游标类似。
6.利用Recordset对象的Filter属性对数据进行筛选时,Recordset对象中的记录内容会发生变化吗?若会发生变化能否还原到Recordset对象的原始数据内容?若可以的话,如何实现?
答:会变化。通过使用释放筛选的方法可以还原到原始内容,即使用语句:
Recordset对象名.Filter = adFilterNone
27