数据库课后习题参考答案Word格式.docx

上传人:b****8 文档编号:22361746 上传时间:2023-02-03 格式:DOCX 页数:36 大小:35.68KB
下载 相关 举报
数据库课后习题参考答案Word格式.docx_第1页
第1页 / 共36页
数据库课后习题参考答案Word格式.docx_第2页
第2页 / 共36页
数据库课后习题参考答案Word格式.docx_第3页
第3页 / 共36页
数据库课后习题参考答案Word格式.docx_第4页
第4页 / 共36页
数据库课后习题参考答案Word格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

数据库课后习题参考答案Word格式.docx

《数据库课后习题参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《数据库课后习题参考答案Word格式.docx(36页珍藏版)》请在冰豆网上搜索。

数据库课后习题参考答案Word格式.docx

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

数据模型是对现实世界数据特征的抽象。

数据模型一般要满足三个条件:

第一是数据模型要能够比较真实地模拟现实世界;

第二是数据模型要容易被人们理解;

第三是数据模型要能够很方便地在计算机上实现。

由于用一种模型同时很好地满足这三方面的要求在目前是比较困难的,因此在数据库系统中就可以针对不同的使用对象和应用目的,采用不同的数据模型。

根据模型应用的不同目的,将这些模型分为概念层数据模型和组织层数据模型两大类,以方便对信息的描述。

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

概念层数据模型是对现实世界的抽象,形成信息世界模型,组织层数据模型是对信息世界进行抽象和转换,形成具体的DBMS支持的数据组织模型。

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

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

实体之间的联系有一对一、一对多和多对多三种。

例如:

系和正系主任是一对一联系(假设一个系只有一名正系主任),系和教师是一对多联系(假设一名教师只在一个系工作),教师和课程是多对多联系(假设一名教师可以讲授多门课程,一门课程可由多名教师讲授)。

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

实体是具有公共性质的并可相互区分的现实世界对象的集合,属性是人们感兴趣的实体或者联系的性质或特征,联系是数据和数据之间的关联关系。

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

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

(2)商店和顾客。

(3)国家和首都。

(1)一对多。

(2)多对多。

(3)一对一。

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

主键是关系表中用于惟一地确定一个元组的属性或最小属性组,其作用是使表中的每一行数据彼此不重复且有意义。

外键是引用另一个表的主键(也可以是候选键)的表中的一个列,其作用是表示两个或多个实体之间的关联关系。

7.指出关系的主键:

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

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

主键:

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

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

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

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

产品表主键:

产品号。

销售表主键为:

(产品号,销售时间)。

销售表的“产品号”为引用产品表的外键。

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

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

数据完整性约束主要包括三大类,即实体完整性、参照完整性和用户定义的完整性。

实体完整性是保证关系数据库中所有的表都必须有主键,且主键不允许为空。

参照完整性用于描述实体之间的关联关系。

用户定义的完整性实际上是约束关系中属性的取值范围,即保证数据库中的数据符合现实语义。

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

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

数据库系统包含的三级模式为:

内模式、模式和外模式。

外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是对数据库整体数据结构的子集或局部重构。

模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

内模式是对整个数据库的底层表示,它描述了数据的存储结构。

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

它带来了哪些功能?

数据库系统的两级映象是模式与内描述间的映象和外模式与模式间的映象。

模式/内模式的映象定义了概念视图和存储的数据库的对应关系,它说明了概念层的记录和字段在内部层次怎样表示。

如果数据库的存储结构改变了,那么,必须对模式/内模式的映象进行必要的调整,使模式能够保持不变。

外模式/概念模式间的映象定义了特定的外部视图和概念视图之间的对应关系,当概念模式的结构可发生改变时,也可以通过调整外模式/模式间的映象关系,使外模式可以保持不变。

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

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

数据库的三级模式的划分实际上将用户、逻辑数据库与物理数据库进行了划分,使彼此之间的相互干扰减到最少。

这三个模式的划分实际上带来了两个数据独立性,即物理独立性和逻辑独立性。

这使得底层的修改和变化尽量不影响到上层。

第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约束的作用是保证数据的取值不重复。

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

(1)“图书表”结构如下:

书号:

统一字符编码定长类型,长度为6,主键;

书名:

统一字符编码可变长类型,长度为30,非空;

第一作者:

普通编码定长字符类型,长度为10,非空;

出版日期:

小日期时间型;

价格:

定点小数,小数部分1位,整数部分3位。

(2)“书店表”结构如下:

书店编号:

店名:

电话:

普通编码定长字符类型,8位长,每一位的取值均是0~9的数字;

地址:

普通编码可变长字符类型,40位长。

邮政编码:

普通编码定长字符类型,6位长。

(3)“图书销售表”结构如下:

统一字符编码定长类型,长度为6,非空;

销售日期:

小日期时间型,非空;

销售数量:

小整型,大于等于1。

主键为(书号,书店编号,销售日期);

其中“书号”为引用“图书表”的“书号”的外键;

“书店编号”为引用“书店表”的“书店编号”的外键。

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,

销售数量smallintcheck(销售数量>

=1),

primarykey(书号,书店编号,销售日期),

foreignkey(书号)references图书表(书号),

foreignkey(书店编号)references书店表(书店编号))

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

ALTERTABLE图书表

ADD印刷数量intcheck(印刷数量>

=1000)

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

ALTERTABLE书店表

DROPCOLUMN邮政编码

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

ALTERTABLE图书销售表

ALTERCOLUMN销售数量int

16.索引的作用是什么?

分为哪几种类型?

索引的作用是为了加快数据的查询速度。

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

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

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

在一个表上只能创建一个聚集索引。

可以创建多个非聚集索引。

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

反之呢?

不对。

唯一索引可以是聚集的也可以是非聚集的。

19.在建立聚集索引时,系统是真正将数据按聚集索引列进行物理排序,对吗?

在建立非聚集索引时呢?

情况又如何?

对。

但在建立非聚集索引时,系统并不物理地调整数据的排列顺序。

20.在第12题的图书表的“第一作者”列上建立一个非聚集索引。

CREATEINDEXindAuthorON图书表(第一作者)

21.在第12题的书店表的“电话”列上建立一个聚集的唯一索引。

CREATEUNIQUECLUSTEREDINDEXindPhone

ON书店表(电话)

22.在第12题的图书销售表的“书号”和“销售日期”两个列上建立一个非聚集索引。

CREATEINDEXindSaleON图书销售表(书号,销售日期)

第4章数据操作

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

select*fromSC

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

selectsname,sagefromstudentwheresdept='

计算机系'

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

selectsno,cno,gradefromsconwheregradebetween70and80

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

selectsname,sagefromstudent

wheresdept='

andsagebetween18and20andssex='

男'

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

selectmax(grade)fromscwherecno='

C001'

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

selectmax(sage)asmax_age,min(sage)asmin_agefromstudent

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

selectsdept,count(*)fromstudentgroupbysdept

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

selectcno,count(*),max(grade)fromscgroupbycno

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

selectsno,count(*),sum(grade)fromscgroupbysnoorderbycount(*)asc

10.查询总成绩超过200分的学生,要求列出学号和总成绩。

selectsno,sum(grade)fromscgroupbysnohavingsum(grade)>

200

11.查询选修C002课程的学生的姓名和所在系。

selectsname,sdeptfromstudentsjoinscons.sno=sc.sno

wherecno='

C002'

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

selectsname,cno,gradefromstudentsjoinscons.sno=sc.sno

wheregrade>

80orderbygradedesc

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

selecto,cnamefromcoursecleftjoinscono=o

whereoisnull

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

selectsnamefromstudentsleftjoinscons.sno=sc.sno

Wheresdept='

andsc.snoisnull

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

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

selectsname,sdeptfromstudentwheresnoin(

selectsnofromscwherecno='

C001'

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

selectsno,snamefromstudentwheresnoin(

selectsnofromscwheregrade>

80)

andsdept='

通信工程系'

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

selectsnamefromstudentsjoinscons.sno=sc.sno

andgrade=(selectmax(grade)fromscjoinstudentsons.sno=sc.sno

wheresdept='

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

selectsname,sagefromstudent

Wheresage=(selectmax(sage)fromstudentandssex='

andssex='

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

selectsno,gradefromscwherecno='

Andgrade>

(selectavg(grade)fromscwherecno='

16.创建一个新表,表名为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_tvalues(NULL,'

B1'

NULL)

insertintotest_tvalues(1,'

B2'

'

C2'

insertintotest_t(COL1,COL2)values(2,'

B3'

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

deletefromscwheregrade<

50

18.将所有选修C001课程的学生的成绩加10分。

updatescsetgrade=grade+10wherecno='

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

updatescsetgrade=grade+10

wheresnoin(

selectsnofromstudentwheresdept='

andcnoin(

selectcnofromcoursewherecname='

计算机文化学'

)。

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

使用视图能够带来如下好处:

●简化数据查询语句:

用户可以将复杂的查询语句封装在视图中,这样以后用户在使用相同的查询时,只需对视图进行查询即可。

●使用户能从多角度看到同一数据:

视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常重要的。

●提高了数据的安全性:

使用视图可以定制允许用户查看哪些数据并屏蔽掉敏感的数据,从而提高数据库数据的安全性。

●提供一定程度的逻辑独立性:

视图对应数据库三级模式中的外模式,因此,可以将用户对数据的操作限制在视图上,而不直接对模式进行操作,这样当模式发生变化时,视图可以不变。

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

使用视图不但不会加快对数据的查询速度,而且还会降低数据查询速度。

因为通过视图查询数据时,要先将这个查询转换为对基本表的查询,有时这个转换是比较复杂的。

因此,通过视图查询数据比直接对基本表查询要慢。

22.写出创建满足下述要求的视图的SQL语句。

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

CREATEVIEWV1

AS

SELECTS.Sno,Sname,Sdept,C.Cno,Cname,Ccredit

FROMStudentSJOINSCONS.Sno=SC.Sno

JOINCourseCONC.Cno=SC.Cno

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

CREATEVIEWV2

SELECTS.Sno,Sname,Cname,Grade

JOINCourseCONC.Cno=SC.Cno

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

CREATEVIEWV3

SELECTSno,Count(*)AStotal

FROMSCGROUPBYSno

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

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

答:

CREATEVIEWV4

SELECTSno,SUM(Ccredit)sum_credit

FROMSCJOINCourseCONC.Cno=SC.Cno

WHEREGrade>

=60

GROUPBYSno

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

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

SELECTSname,Cname,GradeFROMV2WH

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

当前位置:首页 > 高等教育 > 医学

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

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