完整版数据库原理与应用习题参考答案.docx

上传人:b****2 文档编号:12630048 上传时间:2023-04-21 格式:DOCX 页数:29 大小:30.46KB
下载 相关 举报
完整版数据库原理与应用习题参考答案.docx_第1页
第1页 / 共29页
完整版数据库原理与应用习题参考答案.docx_第2页
第2页 / 共29页
完整版数据库原理与应用习题参考答案.docx_第3页
第3页 / 共29页
完整版数据库原理与应用习题参考答案.docx_第4页
第4页 / 共29页
完整版数据库原理与应用习题参考答案.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

完整版数据库原理与应用习题参考答案.docx

《完整版数据库原理与应用习题参考答案.docx》由会员分享,可在线阅读,更多相关《完整版数据库原理与应用习题参考答案.docx(29页珍藏版)》请在冰豆网上搜索。

完整版数据库原理与应用习题参考答案.docx

完整版数据库原理与应用习题参考答案

第1章数据库概述

1.与文件管理相比,数据库管理有哪些优点?

答:

(1)相互关联的数据集合;

(2)较少的数据冗余;(3)程序与数据相互独立;(4)保证数据的安全可靠;(5)最大限度地保证数据的正确性;(6)数据可以共享并能保证数据的一致性。

2.比较文件管理和数据库管理数据的主要区别。

答:

文件系统不能提供数据的独立性,也不能提供数据共享、安全性等功能,这些需要客户端编程实现。

而数据库管理系统可以很方便地提供这些功能。

3.在数据库管理方式中,应用程序是否需要关心数据的存储位置和结构?

为什么?

答:

不需要。

因为这些都由数据库管理系统来维护。

4.在数据库系统中,数据库的作用是什么?

答:

数据库是存储数据的仓库,其作用是存储数据。

5.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据库文件吗?

答:

不可以。

6.数据独立性指的是什么?

它能带来哪些好处?

答:

数据独立性包括逻辑独立性和物理独立性两部分。

物理独立性是指当数据的存储结构发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。

这两个独立性使用户只需关心逻辑层即可,同时增强了应用程序的可维护性。

7.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?

答:

数据库系统一般包括3个主要部分:

数据库、数据库管理系统和应用程序。

数据库是数据的汇集,它以一定的组织形式保存在存储介质上;数据库管理系统是管理数据库的系统软件,它可以实现数据库系统的各种功能;应用程序专指以数据库数据为基础的程序

8.在文件服务器结构和客户/服务器结构中,对数据的处理有什么区别?

答:

在文件服务器结构中,数据的处理是在客户端完成的,而在客户/服务器结构中,对数据的处理是在服务器端完成的,服务器返回给客户端的是处理后的结果。

第2章数据模型与数据库系统结构

1.解释数据模型的概念,为什么要将数据模型分成两个层次?

答:

数据模型实际上是模型化数据和信息的工具,在数据库中,数据模型要满足三个要求:

第一,要能够比较真实地模拟现实世界;第二,要容易被人们理解;第三,要能够很方便地在计算机上实现。

用一种模型来同时满足这三方面的要求比较困难,因此在在数据库系统中针对不同的使用对象和应用目的,采用了两种不同的数据模型来实现,一个是概念层数据模型,用来满足第一和第二个要求;另一个是组织层数据模型,用来满足第三个要求。

2.概念层数据模型和组织层数据模型分别是针对什么进行的抽象?

答:

概念层数据模型主要针对用户的业务进行抽象,组织层数据库模型主要针对具体的数据库管理系统采用的数据组织方式进行抽象。

3.实体之间的联系有几种?

分别是哪些?

请为每一种联系举出一个例子。

答:

有三种:

1:

1;1:

n;m:

n。

1:

1示例:

系和系主任。

1:

n示例:

班和学生;m:

n示例:

教师和学生。

4.说明实体-联系模型中的实体、属性和联系的概念。

答:

实体是具有公共性质的并可相互区分的现实世界对象的集合。

属性是实体所具有的特征或性质。

联系是实体之间的关联关系。

5.指明下列实体间联系的种类:

(1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)。

答:

一对多。

(2)商店和顾客。

答:

多对多。

(3)国家和首都。

答:

一对一。

6.解释关系模型中的主键、外键的概念,并说明主键、外键的作用。

答:

主键是用于唯一确定表中一个元组的一个属性或最小的属性组。

外键用于实现数据之间的关联关系(参照完整性)。

7.指出下列关系模式的主键:

教师授课表(教师号,课程号,学年,授课时数)。

假设一个教师可以在同一个学年讲授多门课程,一门课程也可以在同一个学年由多名教师讲授,但一个教师在一个学年对一门课程只讲授一次,每一次讲授有一个唯一的授课时数。

答:

(教师号,课程号,学年)

8.设有如下两个关系模式,试指出每个关系模式的主键、外键,并说明外键的引用关系。

产品表(产品号,产品名称,产品价格,生产日期),其中产品名称有重复。

销售表(产品号,销售时间,销售数量),假设可同时销售多种产品,但同一产品在同一时间只销售一次。

答:

产品的主键:

产品号,无外键。

销售的主键:

(产品号,销售时间),其中产品号为引用产品表的外键。

9.关系模型的数据完整性包含哪些内容?

分别说明每一种完整性的作用。

答:

包含:

实体完整性、参照完整性和用户定义的完整性。

实体完整性:

作用是保证表中的不存储相同的数据,也不存储无意义的数据。

参照完整性:

用于描述实体之间的联系。

用户定义的完整性:

用于限定属性的取值范围,目的是保证数据库中存储的值与现实世界相符。

10.数据库系统包含哪三级模式?

试分别说明每一级模式的作用?

答:

外模式、模式和内模式。

外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户对数据的需求。

模式:

是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需求。

内模式:

是对整个数据库的底层表示,它描述了数据的存储位置和存储方式。

11.数据库系统的两级映像的功能是什么?

它带来了哪些好处?

答:

两级映像是外模式/模式映像和模式/内模式映像。

外模式/模式映像保证了当模式发生变化时可以保证外模式不变,从而是用户的应用程序不需要修改。

模式/内模式映像保证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,从而使用户不需要知道这些变化。

12.数据库三级模式划分的优点是什么?

它能带来哪些数据独立性?

答:

数据库三级模式的划分使用户可以在逻辑层处理数据,而不需要关心具体的物理细节,同时当内模式或模式发生变化时,可以通过模式之间的映像关系,保持外模式不变,从而避免了修改应用程序。

三级模式以及三级模式之间的两级映像带来了数据的逻辑独立性和物理独立性。

第3章SQL语言基础及数据定义功能

1.T-SQL支持哪几种数据类型?

答:

字符串型、数值型、日期时间型和货币类型。

2.Tinyint数据类型定义的数据的取值范围是多少?

答:

0~255。

3.日期时间类型中的日期和时间的输入格式是什么?

答:

在输入日期部分时可采用英文数字格式、数字加分隔符格式和纯数字格式。

采用英文数字格式时,月份可用英文全名或缩写形式。

在输入时间部分时可以采用12小时格式或24小时格式。

使用12小时制时要加上AM或PM说明是上午还是下午。

在时与分之间可以使用冒号(:

)作为分隔符

4.SmallDatatime类型精确到哪个时间单位?

答:

分钟。

5.定点小数类型numeric中的p和q的含义分别是什么?

答:

p代表数字位长度,即整数部分和小数部分的数字位之和。

q代表小数位数。

6.货币数据类型精确到小数点几位?

答:

精确到小数点后4位。

7.Char(10)、nchar(10)的区别是什么?

它们各能存放多少个字符?

占用多少空间?

答:

char(10)是普通编码,固定占10个字节,最多能存放10个字母或数字字符,5个汉字。

Nchar(10)是统一字符编码,固定占20个字节,最多能存放10个字符(包括字母和汉字)。

8.Char(n)和varchar(n)的区别是什么?

其中n的含义是什么?

各占用多少空间?

答:

Char(n)是定长字符类型,varchar(n)是可变长字符类型。

Char(n)中的n代表固定占n个字节的空间;varchar(n)中的n代表最多占n个字节的空间。

9.数据完整性的作用是什么?

答:

数据的完整性作用是防止数据库中存在不符合语义的数据。

10.在对数据进行什么操作时,系统检查DEFAULT约束?

在进行什么操作时,检查CHECK约束?

答:

插入操作且省略了某些列的值时检查DEFAULT约束。

插入和修改操作检查CHECK约束。

11.UNIQUE约束的作用是什么?

答:

限制列的取值不重复。

12.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束。

答:

Createtable图书表(

书号nchar(6)primarykey,

书名nvarchar(30)notnull,

第一作者char(10)notnull,

出版日期smalldatetime,

价格:

numeric(4,1)

Createtable书店表(

书店编号nchar(6)primarykey,

店名nvarchar(30)notnull,

电话char(8)check(电话like

‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’),

地址varchar(40),

邮政编码char(6)

Createtable图书销售表(

书号nchar(6)notnull,

书店编号nchar(6)notnull,

销售日期smalldatetimenotnull;

销售数量smalldatetimecheck(销售数量>=1);

13.为第12题的“图书表”添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。

答:

altertable图书表Add印刷数量intcheck(印刷数量>=1000)

14.删除第12题的“书店表”中的“邮政编码”列。

答:

altertable书店表Dropcolumn邮政编码

15.将第12题的“图书销售表”中的“销售数量”列的数据类型改为整型。

答:

altertable图书销售表Altercolumn销售数量int

第4章数据操作

1.查询SC表中的全部数据。

Select*fromsc

2.查询计算机系学生的姓名和年龄。

Selectsname,sagefromstudentwheresdept=‘计算机系’

3.查询成绩在70~80分的学生的学号、课程号和成绩。

Selectsno,cno,gradefromscwheregradebetween70and80

4.查询计算机系年龄在18~20岁的男学生的姓名和年龄。

Selectsname,sagefromstudent

wheresdept=‘计算机系’andsagebetween18and20

5.查询“C001”号课程的最高分。

Selectmax(grade)fromscwherecno=‘C001’

6.查询计算机系学生的最大年龄和最小年龄。

Selectmax(sage)最大年龄,min(sage)最小年龄fromstudent

Wheresdept=‘计算机系’

7.统计每个系的学生人数。

Selectsdept,count(*)人数fromstudent

Groupbysdept

8.统计每门课程的选课人数和考试最高分。

Selectcno,count(*)选课人数,max(grade)最高分fromsc

Groupbycno

9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

Selectsno,count(*)选课门数,sum(grade)fromsc

Groupbysnoorderbycount(*)asc

10.查询选修“C002”号课程的学生的姓名和所在系。

Selectsname,sdeptfromstudentsjoinscons.sno=sc.sno

Wherecno=‘C002’

11.查询计算机系年龄最大的前2位学生,列出姓名和年龄。

Selecttop2sname,sagefromstudent

Wheresdept=‘计算机系’

Orderbysagedesc

12.查询学分最高的前3门课程(包括并列的情况),列出课程名、学分和开课学期。

Selecttop3withtiescname,credit,semesterFromcourse

Orderbycreditdesc

13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。

Selectsname,cno,grade

Fromstudentsjoinscons.sno=sc.sno

Wheregrade>80

Orderbygradedesc

14.查询哪些课程没有学生选修,要求列出课程号和课程名。

Selecto,cnamefromcoursecleftjoinscono=o

Whereoisnull

15.查询计算机系哪些学生没有选课,列出学生姓名。

Selectsnamefromstudentsleftjoinscons.sno=sc.sno

Wheresdept=‘计算机系’andsc.snoisnull

16.用子查询实现如下查询:

(1)查询选修了“C001”号课程的学生的姓名和所在系。

Selectsname,sdeptfromstudent

Wheresnoin(selectsnofromscwherecno=‘C001’)

(2)查询通信工程系成绩80分以上的学生的学号和姓名。

Selectsno,snamefromstudent

Wheresdept=‘通信工程系’andsnoin(

Selectsnofromscwheregrade>80)

(3)查询计算机系考试成绩最高的学生的姓名。

Selectsnamefromstudentsjoinscons.sno=sc.sno

Wheresdept=‘计算机系’andgrade=(

Selectmax(grade)fromscjoinstudentsons.sno=sc.sno

Wheresdept=‘计算机系’)

(4)查询年龄最大的男学生的姓名和年龄。

Selectsname,sagefromstudent

Wheresage=(selectmax(sage)fromstudent

wheressex=‘男’)

andssex=‘男’

(5)查询“C001”号课程的考试成绩高于该课程平均成绩的学生的学号和成绩。

Selectsno,gradefromsc

Wherecno=‘C001’andgrade>(

Selectavg(grade)fromscwherecno=‘C001’)

17.创建一个新表,表名为test_t,其结构为(COL1,COL2,COL3),其中,

COL1:

整型,允许空值。

COL2:

字符型,长度为10,不允许空值。

COL3:

字符型,长度为10,允许空值。

试写出按行插入如下数据的语句(空白处表示空值)。

COL1

COL2

COL3

B1

1

B2

C2

2

B3

Createtabletest_t(

COL1int,

COL2char(10)notnull,

COL3char(10))

Insertintotest_t(COL2)values(’B1’)

Insertintotest_t(COL1,COL2)values(1,’B2’)

Insertintotest_tvalues(2,’B3’,NULL)

18.删除成绩小于50分的学生的选课记录。

Deletefromscwheregrade<50

19.删除计算机系VB考试成绩不及格学生的VB选课记录。

Deletefromsc

Fromscjoinstudentsons.sno=sc.sno

Joincoursecono=o

wherecname=‘VB’andgrade<60

andsdept=‘计算机系’

20.删除没人选的课程的基本信息。

Deletefromcoursewherecnonotin(

Selectcnofromcourse)

21.将“C001”号课程的考试成绩加10分。

Updatescsetgrade=grade+10

Wherecno=‘C001’

22.将计算机系所有选修“计算机文化学”课程的学生的成绩加10分。

Updatescsetgrade=grade+10

Wheresnoin(selectsnofromstudentwheresdept=‘计算机系’)

Andcnoin(selectcnofromcoursewherecname=‘计算机文化学’)

第5章索引和视图

1.索引的作用是什么?

答:

索引可以加快数据的查询效率。

2.索引分为哪几种类型?

分别是什么?

它们的主要区别是什么

答:

分为聚集索引和非聚集索引两种。

聚集索引会对数据进行物理排序,非聚集索引不对数据进行物理排序。

3.在一个表上可以创建几个聚集索引?

可以创建多个非聚集索引吗?

答:

一个聚集索引。

可以。

4.聚集索引一定是唯一性索引,对吗?

反之呢?

答:

不对。

反之也不对。

5.在建立聚集索引时,数据库管理系统是真正将数据按聚集索引列进行物理排序。

对吗?

答:

对。

6.在建立非聚集索引时,数据库管理系统并不对数据进行物理排序。

对吗?

答:

对。

7.不管对表进行什么类型的操作,在表上建立的索引越多越能提高操作效率。

对吗?

答:

不对。

8.经常对表进行哪类操作适合建立索引?

适合在哪些列上建立索引?

答:

适合建立索引的情况:

●包含大量非重复值的列。

●使用下列运算符返回一个范围值的查询:

BETWEENAND、>、>=、<和<=。

●返回大型结果集的查询。

●经常被用作联接的列,一般来说,这些列是外键列。

●对ORDERBY或GROUPBY子句中指定的列进行索引,可以使数据库管理系统在查询时不必对数据再进行排序,因而可以提高查询性能。

适合在长度比较短的列上建立索引。

9.使用第4章建立的Student、Course和SC表,写出实现下列操作的SQL语句。

(1)在Student表上为Sname列建立一个聚集索引,索引名为:

SnoIdx。

CreateclusteredindexSnoIdxonstudent(sname)

(2)在Course表上为Cname列建立一个唯一的非聚集索引,索引名为:

CNIdx

CreateindexCNIdxoncourse(cname)

(3)在SC表上为Sno和Cno建立一个组合的聚集索引,索引名为:

SnoCnoIdx。

CreateclusteredindexSnoCnoIdxonSC(sno,cno)

(4)删除Sname列上建立的SnoIdx索引。

10.试说明使用视图的好处。

答:

利用视图可以简化客户端的数据查询语句,使用户能从多角度看待同一数据,可以提高数据的安全性,视图对应数据库三级模式中的外模式,因此提供了一定程度的逻辑独立性。

11.使用视图可以加快数据的查询速度,这句话对吗?

为什么?

答:

不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,即从外模式到模式的转换。

12.使用第4章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。

(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。

Createviewv1As

Selects.sno,sname,sdept,o,cname,credit

Fromstudentsjoinscons.sno=sc.sno

Joincoursecono=o

(2)查询学生的学号、姓名、选修的课程名和考试成绩。

Createviewv2As

Selects.sno,sname,cname,grade

Fromstudentsjoinscons.sno=sc.sno

Joincoursecono=o

(3)统计每个学生的选课门数,要求列出学生学号和选课门数。

Createviewv3As

Selectsno,count(*)astotal

Fromscgroupbysno

(4)统计每个学生的修课总学分,要求列出学生学号和总学分(说明:

考试成绩大于等于60才可获得此门课程的学分)。

Createviewv4As

Selectsno,sum(credit)astotal_credit

Fromsnojoincoursecono=o

Wheregrade>=60

Groupbysno

13.利用第12题建立的视图,完成如下查询:

(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

Selectsname,cname,gradeFromv2wheregrade>=90

(2)查询选课门数超过3门的学生的学号和选课门数。

Select*fromv3wheretotal>=3

(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。

Selectsname,totalfromv3joinstudentsons.sno=v3.sno

Wheresdept=‘计算机系’andtotal>=3

(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。

Selectv4.sno,sname,sdept,total_credit

Fromv4joinstudentsons.sno=v4.sno

Wheretotal_credit>=10

(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。

Selectsname,sage,sdept,total_credit

Fromv4joinstudentsons.sno=v4.sno

Wheresage>=20andtotal_credit>=10

14.修改12题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。

Alterviewv4As

Selectsno,sum(credit)astotal_credit,count(*)astotal_cno

Fromscjoincoursecono=o

Groupbysno

第6章关系数据库规范化理论

1.关系规范化中的操作异常有哪些?

它是由什么引起的?

解决的办法是什么?

答:

主要有插入异常、删除异常和修改异常,这

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1