大学数据库系统基本概念_第1页
大学数据库系统基本概念_第2页
大学数据库系统基本概念_第3页
大学数据库系统基本概念_第4页
大学数据库系统基本概念_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章血居库圣龌本脸

1.数据库系统由哪几部分组成?其中最关键的是哪一部分?

答:数据库系统由用户、应用程序、数据库管理系统(DBMS)、数据库。硬件组成。

最关键的部分是数据库管理系统(DBMS)。

2.文件系统的主要缺点是什么?数据库系统的主要优点是什么?

答:文件系统的主要缺点:数据库系统的主要优点:

(1)数据是分离的。(1)数据是集成的、共享的

(2)数据是重复的(2)数据重复小

(3)数据独立性差(3)数据独立性好

(4)数据难以按用户的需要表示(4)易于表示用户的视图

3.定义下列术语

数据库、数据库管理系统、数据库系统、外模式、概念模式、内模式。

答:

数据库:是一个有结构的、集成的、可共享的、统一管理的数据集合。

数据库管理系统,DBMS是一种用来管理数据库的商品化软件。

数据库系统:实现数据管理的一个系统。有数据库(DB)、数据库管理系统(DBMS)、

应用程序、用户和硬件组成。

外模式:外模式是单个用户用到的数据的逻辑结构描述,通常也称为视图、子模式。

概念模式:概念模式是数据库中数据的逻辑结构描述,也称为模式、概念结构。

内模式:内模式是数据库中数据的存储结构、存储方法、存取策略等描述,也称为

物理模式、存储模式。

4.数据库管理系统的功能是什么?举例说明几种目前市场上常用的数据库产品?

答:数据库管理系统的功能是:

(1)定义数据的结构

DBMS提供数据定义语言(DataDefinitionLanguage,DDL)0通过DDL,可以方便

地定义数据库中的各种对象,如可用DDL来定义图1-6学生选课数据库中的Students

表结构。

(2)数据操纵功能

DBMS提供数据操纵语言(DataManipulationLanguage,DML)。通过DML,可以实

现数据库的基本操作。比如,向表中插入一行数据,删除某些行数据,修改表格中的某

些数据,查询表中数据等。

(3)安全控制和并发控制

因为数据库是集成的、共享的。因此,DBMS具有安全控制的功能,它控制在什么

情况下谁可以执行什么样的数据操作。另外,也因为允许多个用户同时访问数据库,这

可能会引起访问冲突,从而导致数据的不一致。DBMS具有并发控制的功能,以避免并

发操作时可能带来的数据不一致性问题。

(4)数据库的备份和恢复功能

DBMS提供了备份数据库和恢复数据库的功能。

目前市场上常用的数据库产品有:ORACLE、SQLSERVER.DB2

5.数据独立性分哪几种,是如何实现的?

答:数据独立性是指应用程序不因物理存储的改变而改变。数据独立性分为:逻辑

独立性、物理独立性。物理独立性是指内模式改变时,概念模式保持不变。逻辑独立性

是指概念模式改变时,外模式保持不变,从而使应用程序保持不变。

实现:当内模式改变(如数据库的存储设备和存储方法改变)时,DBMS只要通过

改变概念模式到内模式映射,从而使概念模式保持不变,实现了数据的物理独立性。当

数据库的概念模式改变(如增加一个表格)时,DBMS只要改变外模式到模式映射,就

可保持外模式不变。因为应用程序使用外模式,所以只要外模式不变,应用程序也就保

持不变。

因此,DBMS提供的三级模式、二级映射机制,实现了数据独立性。

第2章粽侬

1.解释下列术语:

(1)候选键、主键、外键

答:若表中某一列(或若干列的组合)的值能惟一标识一个行,称该列或列组为候

选键。

如果一个表有多个候选键,通常选择其中一个候选键作为区分行的惟一性标识符,

称为主键(PRIMARYKEY,简写为PK)°如果一个表只有一个候选键,那么这个候选

键就作为主键。

外键(foreignkey,简称FK):指一个表R1中的一个列或列组对应另一个表R2的

主键,那么该列或列组称为表R1的外键。

(2)关系、关系模式、关系数据库

答:

关系是关系模型的数据结构。

关系模式是关系的形式化描述。最简单的表示为:

关系名(属性名1,属性名2,……,属性名n)

其中的某个属性名i或某些属性名组为主键,要用下划线表明。

关系数据库是表或者说关系的集合

(3)完整性规则、实体完整性规则、参照完整性规则

答:完整性规则是为了保证关系(表)中数据的正确、一致、有效而确定的规则。

包括实体完整性(规则)、参照完整性(规则)和用户自定义完整性(规则)三大类。

实体完整性规则是表中任意一行的主键值不能为空值。

参照完整性规则是一个表的外键值可以为空值。若不为空值,则必须等于另一个表

中主键的某个值。

2.如何判断一个表是否与一个关系等价?

答:根据关系的性质来判断。关系的同。

性质是:(6)关系中的元组从上到下出现的顺

(1)关系中每一属性都是最小的。序无关紧要。

(2)关系中同一属性的所有属性值属因此,要使一个表与一个关系等价,

于同一数据类型。则:

(3)关系中的属性名不能重复。(1)表中每一个行与列的交叉点上只

(4)关系的属性位置从左到右出现的能存放一个单值。

顺序无关紧要。(2)表中同一列中的所有列值都必须

(5)关系中任意两个元组不能完全相属于同一数据类型。

(3)表中每一列都有惟一的列名,不(5)表中任意两个行不能完全相同,

允许有两个列有相同的列名。即每一行都是惟一的,没有重复的行。

(4)表中的列从左到右出现的顺序无(6)表中的行从上到下出现的顺序也

关紧要。无关紧要,即行的次序可以任意交换

满足上述条件的表才能称作关系。

3.举例说明主键和外键及作用。

答:主键(PRIMARYKEY)是指表中的某一列或儿列的组合,该列或列的组合的

值惟一地标识一行记录。主键简写为PK。如学生的学号(Sno)必须惟一,它用于惟一

标识一个学生。主键通常用于实施实体完整性,一般都要求每个表有而且仅有一个主键,

每一个主键值必须惟一,且不能为空值(NULL)。

外键(FOREIGNKEY)是指一个表中含有与另一个表的主键PK相同的列组,那

么该列组称为外键,简写为FK,外键并不要求惟一。和主键一样,外键也是由一个或

多个列组成。比如Sno是Students表中的主键,而在Enrollment表中是外键,它代表的

是一个选课的学生的学号。外键的作用是实现参照完整性。

4.Students>Courses、Enrollment三个表的结构和内容如图2-1所示。其中Sno

列是Students表的主键,Cno列是Courses表的主键,(Sno,Cno)歹U组是EnroHment

表的主键,Sno是Enrollment的外键,与Students表的主键对应,Cno是Enrollment

的另一个外键,与Courses表的主键对应。假定要向EnroHment表中插入以下新行。

问哪些行能够成功插入?为什么?

(1)('20010119','Cl',null)

答:不能。因为外键值'20010119,对应的主键值不在Students表中。违反实体参照性

规则。

(2)('20010101','C5',null)

答:不能。因为外键值(5,对应的主键值不在Courses表中。违反实体参照性规则。

(3)('20010101','Cl',null)

答:不能。因为主键值「20010101:P1D已存在。违反实体完整性规则。

(4)(null,80)

答:不能。因为外键值null对应的主键值不在Students表中。违反实体参照性规则。

(5)C2001010T,'C2',null)

答:能。因为外键值20010101,对应的主键值在Students表中,外键值(5,对应的主

键值在Courses表中,满足实体参照性规则。同时,主键值「20010101"'C2')惟一。

满足实体完整性规则。允许Grade列为null。

5.观测以下两个表的内容,确定T1表的三个候选键,T2表的一个候选键。

T1T2

ABCDABCD

AlBCDABCD

1111111

A2BcDABcD

3122111

A3BcDABcD

4221211

A4BcDABcD

2212121

答:

T1表中,A,B都是候选键,因为作为单个属性它们在每一行的值都不相同,能够惟

一表示一行。C,D作为单个属性,它们在每一行的值有相同的,因此,不能把所有

行区别开,但是把它们放在一起,可以能够惟一表示一行。

所以,三个候选键是A,B,CD

T2表中,A,B,C,D单个属性都有重复值,不能够惟一表示每一行。AB,AC,

AD,BC,BD,CD也都不是候选键,因为有重复值。ACD,BCD不是候选键,因

为有重复值。ABC是一个候选键,因为可以惟一表示每一行。ABCD虽然能够表示

一行,但不是最小组合,所以,只有一个候选键是ABC。

6.举例说明等值连接与自然连接的区别。

答:自然连接与等值连接差别在于:

(1)自然连接要求连接的两个表有相同的列(公共列),等值连接则不要求;

(2)自然连接结果表中去掉了重复的列,等值连接却可能包含重复的列。

7.根据图2-1给出的Students、Courses>Enrollment三个表,试用关系代数完成

以下各项查询:

(1)查询计算机系男学生的信息。

答:。Sdept='Computer'ASsex=(Students)

(2)查询计算机系及数学系的学生姓名、性别、年龄。

答:Flsname,Ssex,Sage(°Sdept='Computer,VSdept='Computer'(Students))

(3)查找选修了课程名为,Math,的学生学号、姓名、成绩。

答:Flstudents.Sno,Sname,Grade(。Cname='Math,(Students00Enrollment^CourseS))

(4)查询没有选修Cl课程的学生学号。

答:Ilsno<Students)—Hsno(°cno=©'(Enrollemnt))

(5)查询既选修了C2课程又选修了C3课程的学生学号。

答:risno(°Cno=3(Enrollemnt))AJlsno(。cno=B(Enrollemnt))

(6)查询选修了C2课程或选修了C3课程的学生学号。

答:Ilsno(°cno=*c2,(Enrollemnt))UHsno(。cno='c3‘(Enrollemnt))

或Ilsno(。cno='ci'vcno='C2'(Enrollemnt))

第3章关系数据库语言SQL

1.在对数据进行什么操作时,DBMS会检查缺省值约束?在对数据进行什么操作时,

DBMS会检查CHECK约束?

答:对数据进行插入,DBMS会检查缺省值约束。

对数据进行插入、修改,DBMS会检查CHECK约束。

2.UNIQUE约束与PRIMARYKEY约束的区别?

答:(1)UNIQUE约束允许有一个NULL;而PRIMARYKEY约束不允许有一个NULL;

(2)一个表的UNIQUE约束允许有多个,它定义表的候选键;而PRIMARYKEY

约束只能有一个,它定义表的主键。

3.设有一图书馆数据库,包括三个表:图书表、读者表、借阅表。三个表的结构如表3-8、

表3-9、3-10,数据如第一章图1-3所示。完成以下习题。

表3-1图书表结构

列名说明数据类型约束

图书图书唯一的图书号定长字符串,长度主键

号为20

书名图书的书名变长字符串,长度空值

为50

作者图书的编著者名变长字符串,长度空值

为30

出版图书的出版社变长字符串,长度空值

社为30

单价出版社确定的图书浮点型,FLOAT空值

的单价

表3-2读者表结构

列名说明数据类型约束说明

读者号读者唯一定长字符串,长度为主键

10

编号

姓名读者姓名定长字符串,长度为8非空值

性别读者性别定长字符串,长度为2非空值

办公电话读者办公定长字符串,长度为8空值

电话

部门读者所在变长字符串,长度为空值

30

部门

表3-3借阅表结构

列名说明数据类型约束说明

读者号读者的唯一定长字符串,长度外码,引用读者表

编号为10的主键

图书号图书的唯一定长字符串,长度外码,引用图书表

编号为20的主键

借出日图书借出的定长字符串,长度非空值

期日期为8,为'yymmdd,

归还日图书归还的定长字符串,长度空值

期日期为8,为,yymmdd'

主键为:(读者号,图书

号)

(1)用SQL语句创建图书馆数据库。

答:CREATEDATABASE图书馆

(2)用SQL语句创建上述三个表。

CREATETABLE图书(

图书号CHAR(20)作者VARCHAR(30)单价FLOAT

NOTNULL,NULL,NULL

书名VARCHAR(50)出版社VARCHAR(30)

NULL,NULL,

)

ALTERTABLE图书

ADDCONSTRAINTPK1PRIMARYKEY(图书号)

等价于:

CREATETABLE图书(

图书号CHAR(20)作者VARCHAR(30)单价FLOAT

PRIMARYKEY,NULL,NULL

书名VARCHAR(50)出版社VARCHAR(30)

NULL,NULL,

)

等价于:

CREATETABLE图书(

图书号CHAR(20)作者VARCHAR(30)单价FLOAT

NOTNULL,NULL,NULL,

PRIMARY

书名VARCHAR(50)出版社VARCHAR(30)

KEY(图书号)

NULL,NULL,

)

注意,除空值/非空值约束外,其它约束都可定义一个约束名,用CONSTRAINT(约束

名〉来定义,如:

CREATETABLE图书(

图书号CHAR(20)作者单价FLOAT

NOTNULL,VARCHAR(30)NULL,NULL,

CONSTRAINTPK1

书名出版社

PRIMARYKEY(图书号)

VARCHAR(50)NULL,VARCHAR(30)NULL,

CREATETABLE读者(

读者号CHAR(IO)PRIMARYKEY,办公电话CHAR(8)NULL,

姓名CHAR(8)NOTNULL,部门VARCHAR(30)NULL

性别CHAR(2)NOTNULL,

列后的NULL空值约束可以省略,因为缺省是NULL。

CREATETABLE借阅(

NOTNULL,

读者号CHAR(IO)

归还日期CHAR(8)

NOTNULL,

NULL,

图书号CHAR(20)

PRIMARYKEY(读者

NOTNULL,

借出日期CHAR(8)号,图书号),

FOREIGNKEY(读者号)REFERENCES读者(读者号),

FOREIGNKEY(图书号)REFERENCES图书(图书号)

)

注意,除空值/非空值约束外,其它约束都可定义一个约束名,用CONSTRAINT<

约束名>来定义,如:

CREATETABLE借阅(

读者号CHAR(IO)NOTNULL,

图书号CHAR(20)NOTNULL,

借出日期CHAR(8)NOTNULL,

归还日期CHAR(8)NULL,

CONSTRAINTPK2PRIMARYKEY(读者号,图书号),

CONSTRAINTCK2FOREIGNKEY(读者号)REFERENCES读者(读者

号),

CONSTRAINTCK3FOREIGNKEY(图书号)REFERENCES图书(图书

号)

上述定义中的主键约束,由于涉及表中的两个列,因此只能定义为表级约束。有两个外

键约束,均可定义在列之后,作为列级约束。但通常定义为表级约束,因为外键定义较

长。等价定义为:

CREATETABLE借阅(

读者号CHAR(IO)NOTNULLFOREIGNKEY(读者号)REFERENCES读者

(读者号),

图书号CHAR(20)NOTNULLFOREIGNKEY(图书号)REFERENCES图书(图

书号),

借出日期CHAR(8)NOTNULL,

归还日期CHAR(8)NULL,

PRIMARYKEY(读者号,图书号)

也等价于:

CREATETABLE借阅(

读者号CHAR(IO)NOTNULLREFERENCES读者(读者号),

图书号CHAR(20)NOTNULLREFERENCES图书(图书号),

借出日期CHAR(8)NOTNULL,

归还日期CHAR(8)NULL,

PRIMARYKEY(读者号,图书号)

)

(3)基于图书馆数据库的三个表,用SQL语言完成以下各项操作:

1)给图书表增加一列“ISBN”,数据类型为CHAR(IO)

ALTERTABLE图书

ADDISBNCHAR(IO)

2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949';

ALTERTABLE图书

ADDCONSTRAINTISBNDEFDEFAULT'7111085949'FORISBN

3)为读者表的,办公电话,列,添加一个CHECK约束,要求前五位,88320、约束名为

CHECKDEFo

ALTERTABLE读者

ADDCONSTRAINTCHECKDEF

CHECK(办公电话LIKE4(88320)[0-9][0-9][0-9]5)

4)删除图书表中ISBN列增加缺省值约束;

ALTERTABLE图书

DROPCONSTRAINTISBNDEF

5)删除读者表中“办公电话”列的CHECK约束;

ALTERTABLE读者

DROPCONSTRAINTCHECKDEF

6)删除图书表中新增的列ISBN;

ALTERTABLE图书

DROPCOLUMNISBN

(4)基于图书馆数据库的三个表,用SQL语言完成以下数据更新操作:

1)向读者表加入一个新读者,该读者的信息为:

('200197',‘王小平‘,‘男‘,‘883207321存中楼,)

INSERTINTO读者VALUES('200197','王小平男','88320732'J物理系')

2)向借阅表插入一个借阅记录,表示读者‘王小平’借阅了一本书,图书号

为TP316/ZW6"借出日期为当天的日期,归还日期为空值。

INSERTINTO借阅

VALUESC2001977Tp316/ZW6,,CONVERT(CHAR(8),GETDATE(),l12),NULL)

3)读者,王小平,在借出上述图书后10归还该书;

UPDATE借阅SET归还日期=借出日期+10WHERE读者号=(SELECT读者号

FROM读者WHERE姓名=,王小平,)

4)当读者,王小平,按期归还图书时:删除上述借阅记录;

DELETEFROM借阅

WHERE读者号=(SELECT读者号FROM读者

WHERE姓名=,王小平,)

(5)针对以上三个表,用SQL语言完成以下各项查询:

1)查询全体图书的图书号,书名,作者,出版社,单价。

SELECT图书号,书名,作者,出版社,单价FROM图书

等价于:

SELECT*FROM图书

2)查询全体图书的信息,其中单价打8折,并且将该列设置别名为,打折价’。

SELECT图书号,书名,作者,出版社,单价*0.8,打折价,FROM图书

SELECT图书号,书名,作者,出版社,单价*0.8AS,打折价,FROM图书

SELECT图书号,书名,作者,出版社「打折价=单价*0.8FROM图书

3)显示所有借阅者的读者号,并去掉重复行。

SELECTDISTINCT读者号FROM借阅

若要保留重复行,则用:

SELECTALL读者号FROM借阅

4)查询所有单价在20到30之间的图书信息。

SELECT*FROM图书

WHERE单价BETWEEN20AND30

此句等价于:

SELECT*FROM图书

WHERE单价>=20.00AND单价<=30.00

5)查询所有单价不在20到30之间的图书信息。

SELECT*FROM图书

WHERE单价NOTBETWEEN20.00AND30.00

此句等价于:

SELECT*FROM图书

WHERE单价<20OR单价>30

6)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息

SELECT*FROM图书

WHERE出版社IN,机械工业出版社「科学出版社「人民邮电出版社,)

此句等价于:

SELECT*FROM图书

WHERE出版社=,机械工业出版社,

OR出版社=,科学出版社,OR出版社=,人民邮电出版社,

7)查询既不是机械工业出版社、也不是科学出版社出版的图书信息

SELECT*FROM图书

WHERE出版社NOTIN,机械工业出版社「科学出版社,)

此句等价于:

SELECT*FROM图书

WHERE出版社!=,机械工业出版社,AND出版社!=,科学出版社,

8)查找姓名的第二个字符是,建,并且只有两三个字符的读者的读者号、姓名。

SELECT读者号,姓名FROM读者WHERE姓名LIKE]建/

9)查找姓名以,王,开头的所有读者的读者号、姓名。

SELECT读者号,姓名FROM读者WHERE姓名LIKE,王%,

10)查找姓名以,王,、,张,或,李,开头的所有读者的读者号、姓名。

SELECT读者号,姓名FROM读者WHERE姓名LIKE[王张李]%,

11)查找姓名不是以‘王'、'张'或'李'开头的所有读者的读者号、姓名。

SELECT读者号,姓名FROM读者WHERE姓名LIKE[人王张李]%,

此句等价于:

SELECT读者号,姓名FROM读者WHERE姓名NOTLIKE[王张李]%,

12)查询无归还日期的借阅信息。

SELECT*FROM借阅WHERE归还日期ISNULL

不等价于:SELECT*FROM借阅WHERE归还日期=”

13)查询有归还日期的借阅信息。

SELECT*FROM借阅WHERE归还日期ISNOTNULL

14)查询单价在20元以上,30元以下的机械工业出版社出版的图书名,单价。

SELECT书名,单价FROM图书WHERE出版社=,机械工业出版社,AND单价>20.00

AND单价<30.00

15)查询机械工业出版社或科学出版社出版的图书名,出版社,单价。

SELECT书名,出版社,单价FROM图书WHERE出版社=,机械工业出版社,OR出

版社='科学出版社’

16)求读者的总人数

SELECTCOUNT(*)AS,读者总人数,FROM读者

17)求借阅了图书的读者的总人数

SELECTCOUNT(DISTINCT读者号)AS,借阅过图书的读者总人数,FROM借阅

18)求机械工业出版社图书的平均价格、最高价、最低价。

SELECTAVG(单价)AS,平均价,,MAX(单价)AS,最高价,,MIN(单价)AS,最低价,

FROM图书WHERE出版社=,机械工业出版社,

19)查询借阅图书本数超过2本的读者号、总本数。并按借阅本数值从大到小排序。

SELECT读者号,COUNT(图书号)AS,总本数,

FROM借阅

GROUPBY读者号

HAVINGCOUNT(*)>2

ORDERBYCOUNT(图书号)DESC

(6)针对以上三个表,用SQL语言完成以下各项多表连接查询、子查询、组合查询

1)查询读者的基本信息以及他/她借阅的情况。

SELECT读者.*,借阅产

FROM读者,借阅

WHERE读者.读者号=借阅.读者号

上述是等值连接,改为自然连接,表示如下:

SELECT读者.*,借阅.图书号,借阅.借出日期,借阅.归还日期

FROM读者,借阅

WHERE读者.读者号=借阅.读者号

2)查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。

SELECT读者.读者号,姓名,书名,借出日期,归还日期

FROM读者,图书,借阅

WHERE读者.读者号=借阅.读者号AND图书.图书号=借阅.图书号

3)查询借阅了机械工业出版社出版,并且书名中包含,数据库,三个字的图书的读者,显

示读者号、姓名、书名、出版社,借出日期、归还日期。

SELECT读者.读者号,姓名,书名,出版社,借出日期,归还日期

FROM读者,图书,借阅

WHERE读者.读者号=借阅.读者号AND图书.图书号=借阅.图书号

AND出版社=,机械工业出版社,AND书名LIKE,%数据库%,

4)查询至少借阅过1本机械工业出版社出版的书的读者的读者号、姓名、书名,借阅

本数,并按借阅本数多少降序排列。

SELECT借阅.读者号,姓名,书名,COUNT(借阅.图书号),借阅本数,

FROM读者,图书,借阅

WHERE读者.读者号=借阅.读者号AND图书.图书号=借阅.图书号

AND出版社=,机械工业出版社’

GROUPBY借阅.读者号,姓名,书名

HAVINGCOUNT(借阅.图书号)>=1

ORDERBYCOUNT(借阅.图书号)DESC

6)查询办公电话为,88320701,的所有读者的借阅情况,要求包括借阅了书籍的读者和没

有借阅的读者,显示他们的读者号、姓名、书名、借阅日期。

SELECT读者.读者号,姓名,图书号,借出日期

FROM读者,借阅

WHERE读者.读者号*=借阅.读者号

AND办公电话="88320701,

上述左外连接可可以用右外连接等价表示:

SELECT读者.读者号,姓名,图书号,借出日期

FROM读者,借阅

WHERE借阅.读者号=*读者.读者号

AND办公电话="88320701'

在SQLSERVER2000中,以上左外连接还可等价表示为:

SELECT读者.读者号,姓名,图书号,借出日期

FROM读者LEFTJOIN借阅ON读者.读者号=借阅.读者号

WHERE办公电话="88320701,

或者用右连接表示为:

SELECT读者.读者号,姓名,图书号,借出日期

FROM借阅RIGHTJOIN读者ON借阅.读者号=读者.读者号

WHERE办公电话="88320701,

7)查询所有单价小于平均单价的图书号、书名、出版社

SELECT图书号,书名,出版社FROM图书

WHERE单价〈(SELECTAVG(单价),平均单价,FROM图书)

8)查询,科学出版社,的图书中单价比,机械工业出版社,最高单价还高的的图书书名、单

价。

SELECT图书号,单价FROM图书

WHERE出版社=,科学出版社,AND单价>(

SELECTMAX(单价)FROM图书WHERE出版社=,机械工业出版社,)

等价于:

SELECT图书号,单价FROM图书

WHERE出版社三科学出版社,AND单价〉ALL(

SELECT单价FROM图书WHERE出版社=机械工业出版社)

9)查询科学出版社的图书中单价比,机械工业出版社,最低单价高的的图书书名、单价。

SELECT图书号,单价FROM图书

WHERE出版社三科学出版社,AND单价>(

SELECTMIN俾价)FROM图书WHERE出版社士机械工业出版社)

等价于

SELECT图书号,单价FROM图书

WHERE出版社士科学出版社,AND单价〉ANY(

SELECT单价FROM图书WHERE出版社=机械工业出版社)

10)查询已被借阅过并已归还的图书信息。

SELECT*FROM图书

WHERE图书号IN(SELECT图书号FROM借阅WHERE归还日期ISNOT

NULL)

等价于:

SELECT*FROM图书Bl

WHEREEXISTS(SELECT*FROM借阅B2

WHEREBl.图书号=B2.图书号AND归还日期ISNOTNULL)

11)查询从未被借阅过的图书信息。

SELECT*FROM图书

WHERE图书号NOTIN(SELECT图书号FROM借阅)

等价于:

SELECT*FROM图书Bl

WHERENOTEXISTS(SELECT*FROM借阅B2

WHEREBl.图书号=82.图书号)

12)查询正在借阅的图书信息。

SELECT*FROM图书Bl

WHEREBl.图书号IN(SELECTB2.图书号FROM借阅B2

WHEREBl.图书号=B2.图书号ANDB2.归还日期ISNULL)

等价于:

SELECT*FROM图书Bl

WHEREEXISTS(SELECT*FROM借阅B2

WHEREBl.图书号=B2.图书号ANDB2.归还日期ISNULL)

13)查询借阅了机械工业出版社出版的书名中含有数,据库书,三个字的图书、或者借阅

了科学出版社出版的书名中含有数'据库书'三个字的图书的读者姓名、书名。

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士机械工业出版社,AND书名LIKE%数据库%,

UNION

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士科学出版社,AND书名LIKE%数据库%,

14)查询借阅了机械工业出版社出版的书名中含有数,据库书,三个字的图书并且也借阅

了科学出版社出版的书名中含有数啸库书三个字的图书的读者姓名、书名。

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士机械工业出版社,AND书名LIKE%数据库%,

INTERSECT

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士科学出版社,AND书名LIKE%数据库%,

SQLSERVER2000用的是TSQL,TSQL没有关键字INTERSECT,而是用EXISTS来

实现查询结果的交运算。上述查询在SQLSERVER2000中应表示为:

SELECT姓名,书名

FROM图书,读者R1,借阅

WHERE图书.图书号=借阅.图书号ANDR1.读者号=借阅.读者号

AND出版社士机械工业出版社,AND书名LIKE%数据库%,

ANDEXISTS

(

SELECT*

FROM图书,读者R2,借阅

WHERE图书.图书号=借阅.图书号ANDR2.读者号=借阅.读者号

AND出版社=,科学出版社,AND书名LIKE%数据库%,

ANDR1.读者号=112.读者号)

15)查询借阅了机械工业出版社出版的书名中含有数啸库书,三个字的图书但没有借阅

了科学出版社出版的书名中含有数,据库书三个字的图书的读者姓名、书名。

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士机械工业出版社,AND书名LIKE%数据库%,

MINUS

SELECT姓名,书名

FROM图书,读者,借阅

WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号

AND出版社士科学出版社,AND书名LIKE%数据库%,

SQLSERVER2000用的是TSQL,TSQL没有关键字MINUS或EXCEPT,而是用NOT

EXISTS来表示查询结果的差运算。上述查询在SQLSERVER2000中应表示为:

SELECT姓名,书名

FROM图书,读者R1,借阅

WHERE图书.图书号=借阅.图书号ANDRL读者号=借阅.读者号

AND出版社士机械工业出版社,AND书名LIKE%数据库%,

ANDNOTEXISTS

(SELECT*

FROM图书,读者R2,借阅

WHERE图书.图书号=借阅.图书号ANDR2.读者号=借阅.读者号

AND出版社士科学出版社,AND书名LIKE%数据库%,

ANDRI.读者号=R2.读者号)

4.SQL中基本表和视图的区别和联系是什么?

答:区别:视图是查询的结果。在数据库中,只保存了视图的定义,不保存视图的数据。

基本表的定义(结构)和数据都是实际保存的。联系:视图是从基本表中导出的表,基

本表中的数据改变,则视图的数据也改变。

5.基于图书馆数据库的三个表,完成以下视图有关的题目。

1)建立机械工业出版社图书的视图。

CREATEVIEWBookView

AS

SELECT*

FROM图书WHERE出版社W机械工业出版社,

GO

2)建立所有正在借阅图书的读者号、姓名、书名、借阅日期。

CREATEVIEWCurrBorrowView(读者号,姓名,书名,借阅日期)

AS

SELECT借阅.读者号,姓名,书名,借出日期

FROM读者,图书,借阅

WHERE读者.读者号=借阅.读者号AND图书.图书号=借阅.图书号

AND归还日期ISNULL

GO

3)创建一个借阅统计视图,名为CountView,包含读者的读者号和总借阅本数。

CREATEVIEWCountView(读者号,总本数)

AS

SELECT读者号,COUNT(图书号)

FROM借阅

GROUPBY读者号

GO

4)创建一个借阅统计视图,名为CountViewlO,包含借阅总本数大于2本的读者号和

总借阅本数。

CREATEVIEWCountView10

AS

SELECT*FROMCountView

WHERE总本数>2

1.简述SQLServer2000的基本体系结构。

答:SQLServer2000是一个真正的客户器/服务器的数据库系统。其基本体系结构

如下图所示。它把工作负载划分成在服务器上运行的任务和客户机上运行的任务。客户

机上的应用程序负责数据处理、提供用户操作界面,可以运行于一台或多台客户机上。

SQLServer服务器管理数据库和在多个客户机请求之间分配可用的服务器资源,如内

存、网络带宽和磁盘操作等。客户机/服务器体系结构使用户能为各种环境最优化地设

计和布局应用程序。

2.简述SQLServer2000的4个最主要的系统数据库及其作用。

答:SQLServer2000的4个最主要的系统数据库是master、model、msdb、tempdb

T-SQL语句

数据库,它还包含2个应用数据库pubs和Northwind。其作用如下:

客户端SQLServer服务器

(1)master数据库是SQLServer中成星女口\)姒姑岸。记录的信息包括可用的数

据库、为每一个数据库分配的空间、使用中的进程、用户帐户、活动的锁、系统错误信

息和系统存储过程等。当我们创建一个数据库、更改系统的配置、添加个人登录帐户等

都会引起master数据库的修改。应该在任何会引起更改master的操作之后,及时备份

master数据库。

(2)model数据库是所有用户数据库和tempdb数据的模板。主要作用是为新的

数据库充当模板。每当创建新的数据库时SQLServer会复制model数据库并以此作为

新数据库的基础。可以对model数据库进行修改,包括添加用户定义数据类型、规则、

缺省和存储过程,对model数据库的任何修改都会自动地反映到新建的数据库中。

(3)msdb数据库由SQLServerAgent服务使用,用来管理警报和任务。它还存

储SQLServer管理数据库的每一次备份和恢复的历史信息。

(4)tempdb数据库是所有SQLServer数据库和数据库用户共享的数据库。它提

供存储空间给所有的临时表、临时存储过程及其他临时操作。当用户SQLServer断开

连接时,该用户创建的临时表都会被自动删除。另外,所有在tempdb中创建的临时表

都会在SQLServer停止和重启时自动被删除。

(5)应用数据库pubs数据库和Northwind数据库(这些数据库的名称区分大小

写)。pubs中存储了一个图书出版公司的基本情况,Northwind则包含了一个从事食品

进出口业务公司的销售数据。SQLServer联机丛书中的大多数示例都基于这两个数据

库。

3.根据客户端/服务器的体系结构的定义,分析在查询分析器中,一个TSQL语句的执

行过程?

答:SQL查询分析器是一个客户端程序,用于交互式执行Transact-SQL语句、批处理

和脚本文件。在SQL查询分析器中,用户可在全文本窗口中编辑输入一个TSQL语句,

当选择菜单“查询”分“执行”或者点击工具栏上的卜按钮执行语句时,实际上由查询

分析器将该TSQL语句发给服务器(这里可以理解为DBMS),服务器根据接收到的

TSQL语句执行相应的操作,并将命令操作结果返回给查询分析器,再由查询分析器按

用户通俗易懂的格式在结果窗口中显示结果。

4.什么批处理?脚本文件有什么组成?脚本文件中“GO”的作用?

答:一个批处理是由一条或多条Transact-SQL语句组成。

一个脚本文件包含一个或多个批处理,每一个批处理之间用“GO”分割。GO不

是Transact-SQL语句,而是可为SQLServer2000有关实用工具如SQLServer查询分

析器等识别的命令。SQLServer实用工具将GO解释为应将当前的Transact-SQL批

处理语句发送给SQLServer服务器。当前批处理语句是自上一GO命令后输入的所有

语句,若是第一条GO命令,则是从特殊会话或脚本的开始处到这条GO命令之间的

所有语句。因此,GO意味着一个批处理的结束。

习题参考答案

1.实体之间的联系有哪几种?试为每一种联系举出一个例子。

答:常用的二元实体之间的联系有:一对一联系(1:1)、一对多联系(l:n)、多对

多联系(m:n)三种。例如:

(C)

其中,图(a)表示一对一联系(1:1),含义为一个学生有且只有一本借书证,一本

借书证有且只被一个学生拥有。

图(b)表示一对一联系(l:n),表示一幢宿舍(实例)分配给1到多个学生(实例)

居住,但一个学生最多被分配住在一幢宿舍,也必分配在某一幢宿舍居住。

图(c)表示一对一联系(m:n),表明一个学生最多可以选修n门课程,每门课程最

多有m个学生选修,而最少的情况是:一个学生最少可以选修0门课程,每门课程最

少可以被0个学生选修。

2.对于图5-20所示的E-R模型(带下画线的属性为标识符),试设计出相应的关系

数据库模式。

答:关系数据库模式如下:

A(A1,A2,A3)C(C1,C2,D(D1,D2,D3,D4AB(A1,A2,Bl

B(B1,B2,B3)C3442),BI)

3.图5-21是某个教务管理数据库设计中的E-R图,请将它们转换为关系模型。

图5-21习题3

的E-R模型

答:学生(学号,姓名,性别,年龄)教师(教师号,姓名,性别,职称)

课程(课程号.课程名,课程性质,学分)教课(教师号,课程号)

选课(学号,课程号,上课地点.上课时教学(学号,教师号)

间,成绩)

4.某学校有系、教师、学生和课程等基本对象组成,每个系有一位系主任和多位

教师,一个教师仅在一个系任职;每个系需要开设多门不同的课程,一门课程也可在不

同的系开设;一门课程由一位到多位教师授课,一个教师可以授0到多门课程;一个学

生可以在不同的系选修多门课程,一门课程可以被多个学生选修。假定系的基本数据项

有系编号、系名,位置;课程的基本数据项有课程号,课程名称,开课学期,学分;学

生的基本数据项有学号,姓名、性别;教师有教师编号,教师姓名,职称等数据项。请

设计该学校的概念模型并用E-R图表示,并将你设计的E-R图转换为相应的关系模

型。

为简化起见,各实体的属性表示如下:

系:系编号,系名,位置

课程:课程号,课程名称,开课学期.学分

学生:学号.姓名.性别

教师:教师编号,教师姓名,职称

相应的关系模型为:

系(系编号,系名,位置)

课程(课程号,课程名称,开课学期,系编号,教赚编号)

学生(堂号,姓名,性别)

教师(教师编号,教师姓名,歌林,系编号,系主任编号)

授课(学号,课程号)

5.某超市公司下属有若干个连锁商店,每个商店经营若干商品,每个商店有若干

职工,但每个职工只能在一个商店工作。设实体“商店”的属性有:商店编号,店名,

店址,店经理。实体“商品”的属性有:商品编号,商品名,单价,产地。实体“职工”

的属性有:职工编号,职工名,性别,工资。试画出反映商店、商品、职工实体及其联

系类型的E-R图,要求在联系中应反映出职工参加某个商店工作的起止时间,商店销售

商品的月销售量,并将你设计的E-R图转换为相应的关系模型。

答:E-R图如下:

为节省篇幅,各个实体的属性说明如下:

实体“商店”的属性有:商店编号,店名,店址,店经理

实体“商品”的属性有:商品编号,商品名,单价,产地

实体“职工”的属性有:职工编号,职工名,性别,工资

考虑到商店是一种连锁商店,属于超市公司下面,因此一种商品可能在多个连锁商店经

营,因此,确定商店与商品之间的联系为:m:n.

转换得到的关系模型:

商店(商店编号,店名,店址,店经理)

商品(商品编号,商品名,单价,产地)

职工(职工编号,职工名,性别,工资,商店编号,开始工作时间,结束工作时间)

经营(商店编号,商品编号,月销售量)

6.设某网站开设虚拟主机业务,需要设计一个关系数据库进行管理。网站有多名职工,

参与主机的管理、维护与销售。一个职工(销售员)可销售多台主机,一台主机只能被

一个销售员销售。一个职工(维护员)可以维护多台主机,一台主机可以被多个维护员

维护;一个管理员可管理多台主机,一台主机只能由一个管理员管理。主机与客户单位

及销售员之间存在租用关系,其中主机与个客户单位是多对多的,即一台主机可分配给

多个客户单位,一个客户单位可租用多台主机。每次租用由一位销售员经手。假设职工

有职工号、姓名、性别、出生年月、职称、密码等属性,主机有主机序号、操作系统、

生产厂商、状态、空间数量、备注等属性,客户单位有单位名称、联系人姓名、联系电

话等属性。试画出E-R图并将E—R图转换为相应的关系模型。

答:E-R图如下:

为节省篇幅,各个实体的属性说明如下:

实体“职工”的属性有:职工号、姓名、性别、出生年月、工作类别、职称、密码

实体“主机”的属性有:主机序号、操作系统、生产厂商、状态、空间数量、备注

实体“用户单位”的属性有:单位名称、联系人姓名、联系电话

1.解释31搬念:

(1)函数依赖、部分函数依赖、完全函数依赖、传递函数依赖。

(2)第一范式(INF)、第二范式(2NF)、第三范式(3NF)、BCNF范式。

答:设一个关系模式R(U),R是关系的名称,U是关系R的所有属性的集合,X和

Y为属性集U上的子集。若对于任一元组在X上的每一个值,都有Y上的一个唯一

值与之对应,则称X函数决定Y,或称Y函数依赖于X,记作X—Y。X称为这个

函数依赖的决定因子。函数依赖可以简单理解为:如果知道属性X的值,就可以获

得属性Y的值,那么属性X函数决定属性Y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论