数据库原理与应用习题集11套.docx

上传人:b****3 文档编号:12718708 上传时间:2023-04-21 格式:DOCX 页数:39 大小:76.33KB
下载 相关 举报
数据库原理与应用习题集11套.docx_第1页
第1页 / 共39页
数据库原理与应用习题集11套.docx_第2页
第2页 / 共39页
数据库原理与应用习题集11套.docx_第3页
第3页 / 共39页
数据库原理与应用习题集11套.docx_第4页
第4页 / 共39页
数据库原理与应用习题集11套.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

数据库原理与应用习题集11套.docx

《数据库原理与应用习题集11套.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用习题集11套.docx(39页珍藏版)》请在冰豆网上搜索。

数据库原理与应用习题集11套.docx

数据库原理与应用习题集11套

=============================================1

第1章习题

一、选择题

1.下列四项中,不属于数据库系统优点的是(   )。

A.实现数据共享B.确保数据的安全性与**性

C.控制数据冗余D.数据依赖程序

2.数据库系统中,对用户使用的数据视图的描述称为()。

A.概念模式B.内模式

C.存储模式D.外模式

3.下列四项中,不属于数据库特点的是()。

A.数据共享B.数据完整性

C.数据冗余很高D.数据独立性高

4.数据库的三级模式之间存在着两级映像,使数据库系统具有较高的数据()。

A.相容性B.独立性

C.共享性D.一致性

5.数据库系统的三级模式结构中,定义索引的组织方式属于(   )。

A.概念模式B.外模式

C.逻辑模式D.内模式

6.E-R模型属于(   )。

A.概念模型B.层次模型

C.网状模型D.关系模型

7.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是()。

A.多对多B.一对一

C.多对一D.一对多

8.反映现实世界中实体及实体间联系的信息模型是()。

A.关系模型B.层次模型

C.网状模型D.E-R模型

二、设计题

1.*医院病房计算机管理中需要如下信息:

科室:

科名,科地址,科,医生**

病房:

病房号,床位号,所属科室名

医生:

**,职称,所属科室名,年龄,工作证号

病人:

病历号,**,性别,诊断,主管医生,病房号

其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。

设计该计算机管理系统的E-R图,并注明属性和联系类型。

2.假设*公司的业务规则如下:

(1)公司下设几个部门,如技术部、财务部、市场部等。

(2)每个部门承担多个工程项目,每个工程项目属于一个部门。

(3)每个部门有多名职工,每一名职工只能属于一个部门。

(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工。

根据职工在工程项目中完成的情况发放酬金。

(5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称两个属性;职工有职工号、**、性别属性。

请根据上述规则设计E-R模型。

3.*公司的业务规则如下:

(1)每位职工可以参加几个不同的工程,且每个工程有多名职工参与;

(2)每位职工有一个职位,且多名职工可能有相同的职位;

(3)职位决定小时工资率,公司按职工在每一个工程中完成的工时,计算酬金;

(4)职工的属性有职工号、**、职位和小时工资率;

(5)工程的属性有工程号和工程名称。

试根据上述业务规则设计E-R模型。

答案:

一、选择题DDCBDADD

二、设计题

1.

2.

3.

===================================================2

第3章习题

1.学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教师,每名教师只教一门课,每门课可由多个教师教;每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。

请用E-R图画出该学校的概念模型,注明联系类型,再将E-R模型转换为关系模型。

2.工厂生产的每种产品由不同的零件组成,有的零件可用于不同的产品。

这些零件由不同的原材料制成,不同的零件所用的材料可以相同。

一个仓库存放多种产品,一种产品存放在一个仓库中。

零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中(不跨仓库存放)。

请用E-R图画出此关于产品,零件,材料,仓库的概念模型,注明联系类型,再将E-R模型转换为关系模型。

3.一个图书馆管理系统中有如下信息:

图书:

书号、书名、数量、位置

借书人:

借书证号、**、单位

名、邮编、地址、、

其中约定:

任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个可以出版多种书籍,同一本书仅为一个所出版,名具有唯一性。

根据以上情况,完成如下设计:

(1)设计系统的E-R图;

(2)将E-R图转换为关系模式;

(3)指出转换后的每个关系模式的关系键。

答案

假定:

主码用____表示

外码用表示

该E-R图可以转换为以下关系模式:

学院(院名,地址,成立日期,教师人数,学生人数)

系(系名,系址,系主任,院名)

班级(班号,专业名,入学年份,学生数,班级导师,系名)

学生(**,**,性别,出生日期,联系,籍贯,班号)

教研室(教研室名称,教师人数,,办公室编号,系名)

教师(教工号,**,性别,出生日期,联系,教研室名称,课号)

课程(课号,课名,学时,学分,开课学期,必修课否)

选修(**,课号,成绩)

2.

该E-R图可以转换为以下关系模式:

产品(产品名,型号,重量,仓库号,数量c)

零件(零件名,规格)

材料(材料编号,名称,仓库号,数量a)

仓库(仓库号,地点,面积,保管员)

产品-零件(产品名,零件名,组装日期b)

零件-材料(材料编号,零件名,生产日期a)

零件-仓库(零件名,仓库号,数量b)

3.

该E-R图可以转换为以下关系模式:

图书(书号,书名,数量,位置,名)

借书人(借书证号,**,单位)

(名,邮编,地址,,)

借阅(借书证号,书号,借书日期,还书日期)

===================================================3

第5章习题

1.试用T-SQL语言创建ZYGL(职员管理)数据库,要求数据文件的初始大小为1MB,最大大小为50MB,增长方式按10%增长;日志文件的初始大小为3MB,按1MB增长。

2.试用T-SQL语言修改ZYGL数据库的主数据文件,将增长方式修改为按5MB增长。

3.试用T-SQL语言修改ZYGL数据库,为ZYGL增加一个数据文件ZYGLBAK。

4.试用T-SQL语言删除ZYGL数据库。

--1.

CREATEDATABASEzygl

ON

(NAME='zygl_Data',

FILENAME='E:

\sql\zygl_Data.MDF',

SIZE=1,MA*SIZE=30,FILEGROWTH=10%

LOGON

(NAME='zygl_Log',

FILENAME='E:

\sql\zygl_Log.LDF',

SIZE=3,FILEGROWTH=1

GO

--2

ATLERDATABASEZYGL

MODIFYFILE

(NAME=ZYGL_DATA,FILEGROWTH=5)

--3

ATLERDATABASEZYGL

ADDFILE

(NAME=ZYGLBAK,

FILENAME='E:

\sql\zygl_Data1.NDF',

SIZE=1,MA*SIZE=50,FILEGROWTH=10%)

--4

DROPDATABASEZYGL

===================================================4

第6章习题

设计题

现有一个数据库scd,库中包含以下系、学生、班级各表:

student(**,**,年龄,班号)

class(班号,专业名,系名,入学年份)

department(系号,系名)

假设表中将有如下数据:

student(

2008101,*山,18,101;

2008102,李斯,16,102;

2008103,王玲,17,111;

2008105,李飞,19,112

  )

class(

101,软件,计算机,2005;

102,微电子,计算机,2006;

111,无机化学,化学,2004;

112,高分子化学,化学,2006

  )

department(

001,数学;

002,计算机;

003,化学

1.用SQL语言创建以上各数据表,在定义中要求为每一字段(列)选择合适的数据类型和长度,并设置适当的约束,即声明:

  

(1)每个表的主键和所有可能的外键。

(2)学生**不能为空。

(3)系部系名不能为空,且唯一。

(4)学生的年龄介于15到40岁之间,默认为18。

2.试用SQL语言完成下列功能:

(1)学校又新增加了两个系部:

一个物理系,编号为006,一个经济系,编号为008。

(2)将入学年份在2004年以前的班级删除。

(3)学生*山转到111班,请更新相关的表。

(4)为每个学生的年龄增加1岁,请更新相关的表。

3.试用SQL语言修改表结构:

由于年龄可以通过出生日期计算而来,对student表删除“年龄”字段,增加一个“出生日期”字段。

(提示:

必须先删除对年龄的检查约束,才能删除年龄列)

答案

--1.

createdatabasescd

go

Usescd

Go

CREATETABLEdepartment

(系号char(3)PRIMARYKEY,

系名char(20)notnullunique

Go

CREATETABLEclass

(班号char(3)PRIMARYKEY,

专业名char(20),

系名char(20)referencesdepartment(系名),

入学年份int

Go

CREATETABLEstudent

(**char(7)PRIMARYKEY,

**char(8)NOTNULL,

年龄intconstraintck_nlCHECK(年龄>=15and年龄<=40)

constraintdf_nlDEFAULT18,--指定约束名ck_nl和df_nl,以便以后好删除

班号char(3)referencesclass(班号)

Insertintodepartmentvalues('001','数学');

Insertintodepartmentvalues('002','计算机');

Insertintodepartmentvalues('003','化学')

Insertintoclassvalues('101','软件','计算机',2005);

Insertintoclassvalues('102','微电子','计算机',2006);

Insertintoclassvalues('111','无机化学','化学',2004);

Insertintoclassvalues('112','高分子化学','化学',2006)

Insertintostudentvalues('2008101','*山',18,'101');

Insertintostudentvalues('2008102','李斯',16,'102');

Insertintostudentvalues('2008103','王玲',17,'111')

Insertintostudentvalues('2008104','李飞',19,'112')

--2.

--1)

Insertintodepartmentvalues(‘006’,’物理系‘)

Insertintodepartmentvalues(‘008’,’经济系‘)

--2)

Deleteclasswhere入学年份<2004

--3)

Updatestudentset班号='111'where**='*山'

--4)

Updatestudentset年龄=年龄+1

--3.

--1)

--要删除年龄列,应先删除该列上的约束,再删除

Altertablestudentdropconstraintck_nl,df_nl

--删除年龄列

Altertablestudentdropcolumn年龄

Altertablestudentadd出生日期datetime

--2)

Altertableclass

Add班长**char(7)referencesstudent(**)

===================================================5

第7章习题

设计题

以下各题在CJGL数据库中实现:

1.查询“数据库原理”这门课程的学分和开课学期。

2.查询身高在175cm以上的男生信息。

3.查询所有姓“李”同学的基本情况。

4.查询至少选修了两门课程的学生**。

5.将所有学生信息按身高逆序输出。

6.查询平均成绩在75分以上的学生**、性别和专业。

7.查询“李林”同学没学过的课程号。

8.查询有两门课以上不及格的学生**。

9.检索选修课程包含“程明”同学所选课程之一的学生**。

10.检索同时选修了课程号为101和102这两门课程的学生**。

11.检索选修课程名为“数据库原理”的学生**和**。

12*.查询每门课得最高分的学生**。

13*.检索选修课程包含**为081103的学生所修全部课程的学生**。

14.创建一个名为avg75的视图,包含所有平均成绩在75分以上的学生信息。

答案

1.查询“数据库原理”这门课程的学分和开课学期。

Select课程号,开课学期

Fromkc

Where课程名=’数据库原理’

2.查询身高在175cm以上的男生信息。

Select*

From*s

Where性别=’男’and身高>175

3.查询所有姓“李”同学的基本情况。

Select*

From*s

Where**like‘李%’

4.查询至少选修了两门课程的学生**。

Select**

From*s_kc

Groupby**

Havingcount(课程号)>=2

5.将所有学生信息按身高逆序输出。

Select*

From*s

Orderby身高desc

6检索平均成绩在75分以上的学生**、性别和专业。

方法一:

Select**,性别,专业名

From*s

Where**in(

Select**

From*s_kc

Groupby**

Havingavg(成绩)>75)

方法二:

Select**,性别,专业名

From*s_kcJOIN*sON*s.**=*s_kc.**

Groupby*s.**,**,性别,专业名

Havingavg(成绩)>75

7.检索“李林”同学不学的课程号。

Select课程号

Fromkc

Where课程号notin(

Select课程号from*s,*s_kc

Where*s.**=*s_kc.**and*s.**=’李林’)

8.查询只有两门课不及格的学生**。

Select**

From*s

Where**in(Select**

From*s_kc

Where成绩<60

Groupby**

Havingcount(课程号)=2)

9.检索选修课程包含“程明”同学所选课程之一的学生**。

Selectdistinct**

From*s_kc

Where课程号in(

Select课程号from*s,*s_kc

Where*s.**=*s_kc.**and*s.**=’程明’)

10.检索同时选修了课程号为101和102这两门课程的学生**。

select*from*s_kc

------------------

错误写法:

Select**

From*s_kc

Where课程号='101'or课程号='102'

Select**

From*s_kc

Where课程号='101'and课程号='102'

-------------------------------------------方法一,使用自连接:

方法一,使用自连接:

Selecta.**

From*s_kca,*s_kcb

Wherea.**=b.**anda.课程号='101'andb.课程号='102'

方法二,使用子查询:

Select**

From*s

Where**in(select**From*s_kcwhere课程号='101')

And**in(select**From*s_kcwhere课程号='102')

方法三、

Select**

From*s_kc

Where课程号='101'or课程号='102'

groupby**havingcount(**)=2

11.检索选修课程名为“数据库原理”的学生**和**。

Selecta.**,**

From*sa,*s_kcb,kcc

Wherea.**=b.**andb.课程号=c.课程号and课程名=’数据库原理’

12.查询每门课的最高分的学生**。

相关查询法

SELECTA.**,**,B.课程号,成绩

FROM*SA,*S_KCB

WHEREA.**=B.**AND成绩=

(SELECTMA*(成绩)FROM*S_KCC

WHEREB.课程号=C.课程号)

或派生表法

SELECTA.**,B.课程号,B.成绩,C.最高成绩

FROM*SA,*S_KCB,(SELECT课程号,MA*(成绩)最高成绩FROM*S_KCgroupby课程号)C

WHEREA.**=B.**ANDB.课程号=C.课程号andB.成绩=C.最高成绩

13.检索选修课程包含**为081101的学生所修课程的学生**。

方法一,

selectdistinct**

from*s_kc

where课程号in(select课程号

from*s_kc

where**='081101')

groupby**

havingcount(课程号)=

(selectcount(课程号)

from*s_kc

where**='081101')

方法二,

SELECT**,**

FROM*s

WHERENOTE*ISTS(

SELECT*

FROMkc,*s_kca

WHEREkc.课程号=a.课程号and**=’081103’

andNOTE*ISTS(

SELECT*

FROM*s_kcb

WHEREb.**=*s.**AND课程号=kc.课程号))

14.创建一个名为avg75的视图,包含所有平均成绩在75分以上的学生信息。

Createviewavg75

As

Select*

From*s

Where**in(

Select**

From*s_kc

Groupby**

Havingavg(成绩)>75)

Createviewavg75

As

Select**,性别,专业名,avg(成绩)

From*s_kcJOIN*sON*s.**=*s_kc.**

Groupby**,性别,专业名

Havingavg(成绩)>75

===================================================6

第8章习题

对于数据库scd,库中包含以下系、学生、班级各表:

student(**,**,年龄,班号)

class(班号,专业名,系名,入学年份)

department(系号,系名)

请使用T-SQL语言完成以下各题。

1.将student表的班号与**这两列组合创建一个升序的非聚集索引。

2.为department表的系名建立一个唯一索引,如果输入了重复的键,将忽略该INSERT或UPDATE语句,并使用填充因子FILLFACTOR为50%。

3.为数据库scd建立一个默认对象,使其对应于年龄为18,将其绑定到student表的年龄列上。

4.为数据库scd建立一个规则对象,并将其绑定到学生表的专业名列上,规定专业名的取值只能为‘护理学’、‘地质勘探’和‘考古学’之一。

5.修改class表为其建立一个CHECK约束,检查入学年份是否小于2009。

答案

1.将student表的班号与**这两列组合创建一个升序的非聚集索引。

Createnonclusteredinde*i*_bj_*monstudent(班号asc,**asc)

2.为department表的系名建立一个唯一索引,如果输入了重复的键,将忽略该INSERT或UPDATE语句,并使用填充因子FILLFACTOR为50%。

Createuniqueinde*uqi*_*mondepartment(系名asc)

WITHIGNORE_DUP_KEY,FILLFACTOR=50

3.为数据库scd建立一个默认对象,使其对应于年龄为18,将其绑定到student表的年龄列上。

Createdefaultd_ageas18

Go

E*ecsp_bindefault‘d_age’,‘student.年龄’

4.为数据库scd建立一个规则对象,并将其绑定到学生表的专业名列上,规定专业名的取值只能为‘护理学’、‘地质勘探’和‘考古学’之一。

Createruler_zymaszymin(‘护理学’,‘地质勘探’,’考古学’)

Go

E*ecsp_bindrule‘r_zym’,‘student.专业名’

5.修改class表为其建立一个CHECK约束,检查入学年份是否小于2008。

Altertableclass

Addconstraintck_r*nfcheck(入学年份<2008)

==================================================7

第9章习题1

习题九

三、设计题:

1.使用流程控制语句编写程序:

(1)在CJGL数据库中,使用case函数处理:

如果课程的学时在80以上显示学习时间长,学时在54~80显示学习时间一般,否则显示学习时间短。

(2)在CJGL数据库中,使用case函数处理:

如果学生的专业是“计算机”,显示热门,是“通信工程”显示一般,否则显示冷门。

(3)计算18!

=18*17*16…*2*1。

(4)计算S=1!

+2!

+3!

+……+10!

2.以下各题在CJGL数据库中实现:

(1)创建一个自定义函数,可以求解任意数n的阶乘,即n!

并用n=10调用该函数。

(2)分别用函数或存储过程实现以下功能:

给定输入参数课程名,统计该课程成绩介于58~59分的学生人数。

使用输入参数“数据库原理”调用该函数或该存储过程。

(3)创建存储过

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

当前位置:首页 > 工程科技 > 材料科学

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

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