数据库第三章课后习题解答Word下载.docx

上传人:b****2 文档编号:15180778 上传时间:2022-10-28 格式:DOCX 页数:20 大小:183.35KB
下载 相关 举报
数据库第三章课后习题解答Word下载.docx_第1页
第1页 / 共20页
数据库第三章课后习题解答Word下载.docx_第2页
第2页 / 共20页
数据库第三章课后习题解答Word下载.docx_第3页
第3页 / 共20页
数据库第三章课后习题解答Word下载.docx_第4页
第4页 / 共20页
数据库第三章课后习题解答Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数据库第三章课后习题解答Word下载.docx

《数据库第三章课后习题解答Word下载.docx》由会员分享,可在线阅读,更多相关《数据库第三章课后习题解答Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

数据库第三章课后习题解答Word下载.docx

SEXchar

(1)notNULLcheck(sex='

0'

orsex='

1'

),

BDATEdatetime,

DEPTvarchar(10),

DORMITORYvarchar(10)

图3.17用SQL语句创建students表

进入企业管理器用基本操作创建students表。

用右键单击“mydb”数据库,从弹出的菜单中选择“新建”,再从其下一级菜单中选择“表”。

或者,用右键单击“mydb”数据库下一级的“表”,从弹出的菜单中选择“新建表”。

然后,在弹出的窗体中,把students表所包含的字段逐一输入,每个字段都要指明列名、数据类型、长度和是否允许空值、是否主键等内容,如图3.18所示。

图3.18用基本操作创建students表

其中,SEX字段取值为0或1,需要建立约束。

操作是用右键单击SEX字段,从弹出的菜单中选择“CHECK约束”,再从弹出的“属性”窗体中,选择“CHECK约束”卡,在约束表达式框中输入约束表达式,如图3.19所示。

图3.19输入约束表达式

最后,单击“保存”图标,SQLServer将弹出一个“选择名称”对话框,输入表名“students”,单击“确定”按钮,新建的students表结构将被保存起来。

3.5在Access中,完成习题3.4的要求。

(SNOtext(10)notnullprimarykey,

NAMEtext(10)notnull,

SEXtext(10)notnull,

BDATEdatetime,

DEPTtext(10),

DORMITORYtext(10))

注意,J-SQL的CREATETABLE语句没有提供对字段的检查约束。

可以在创建表后,使用基本操作方式,对SEX字段建立有效性规则。

3.7在SQLServer中,创建表Depts(DNO,DNAME,MGR)。

用SQL语句在习题3.4中创建的Students表中将DEPT设置为外键,引用Depts表中的DNO列值。

若某系还有学生时,不得在Depts表中删除该系的记录。

usemydb

createtableDepts

(DNOvarchar(10)notNULLprimarykey,

DNAMEchar(10)notNULL,

MGRchar(10))

altertablestudentsaddconstraintc1

foreignkey(Dept)referencesDepts(Dno)ondeletecascade

3.8什么是视图?

视图的作用是什么?

在习题3.4所创建的Students表的基础上,建立一个显示所有计算机系学生的视图,假设计算机系的代号为‘CS’。

go

createviewstudent_cs_view/*SQLSERVER约定:

本语句必须为批处理的第一个语句*/

as

select*

fromstudents

wherestudents.DEPT='

cs'

3.11在SQLServer中完成下列操作:

①用修改表结构语句在Students表中添加整型的Height和Weight字段。

②创建一个规则并绑定到Height列,用以限制插入到该列的整数范围。

③创建一个默认值并绑定到Weight列,插入记录时,默认值自动填充到该列中。

④基于Students表与Depts表,分别建立惟一性约束、检查约束、主键约束、外键约束和参照(引用)完整性约束,并辅以其他操作予以验证。

⑤创建并执行一个带SELECT查询语句的存储过程,统计出每个系的学生平均身高。

⑥创建一个触发器,其功能是:

当试图在Depts表中修改数据时将发出警告消息。

①在Students表中添加整型的Height和Weight字段:

altertablestudentsaddHeightint,Weightint

②创建一个规则并绑定到Height列,用以限制插入到该列的整数范围:

createruleR1as@range>

=145and@range<

=200

execsp_bindrule@rulename='

R1'

@objname='

students.Height'

③创建一个默认值并绑定到Weight列,插入记录时默认值自动填充到该列中:

createdefaultD1as50

execsp_bindefault@defname='

D1'

@objname='

students.Weight'

④基于Students表与Depts表,分别建立惟一性约束、检查约束、主键约束、外键约束和参照(引用)完整性约束:

/*假设在mydb库中建表,若表students已存在,创建前先把该表删除*/

(SNOchar(10)notNULLprimarykey,/*主键约束*/

NAMEvarchar(10)notNULLunique,/*惟一性约束*/

SEXchar

(1)notNULLcheck(sex='

orsex='

),/*检查约束*/

DEPTvarchar(10)constraintc1foreignkey(Dept)/*外键约束*/

referencesDepts(Dno)ondeletecascade,/*参照完整性约束*/

DORMITORYvarchar(10)

注:

创建表后,有关验证性的操作,请读者自行完成。

⑤创建一个带SELECT查询语句的存储过程p1,统计出每个系的学生平均身高:

createprocp1

as

selectdept,avg(Height)asavg_h

fromstudents

groupbydept

return

执行存储过程p1的语句如下:

execp1

⑥创建一个触发器,其功能是当试图在Depts表中修改数据时将发出警告消息:

createtriggert1ondepts

forupdate

raiserror('

警告!

'

10,1)

当使用update语句修改Depts表中数据时,将在消息栏显示“警告!

”消息。

3.12假设教学数据库中有三个表,其数据结构如下:

学生表S(学号SNO,姓名SNAME,年龄AGE,性别SEX);

选修表SC(学号SNO,课程号CNO,成绩GRADE);

课程表C(课程号CNO,课程名CNAME,任课教师TEACHER);

试用基本的SELECT语句表达下列操作:

①检索选修课程号为C06的学生学号与成绩。

②检索选修课程号为C06的学生学号与姓名。

③检索选修课程名为ENGLISH的学生学号与姓名。

④检索选修课程号为C08或C12的学生学号与成绩。

⑤检索至少选修课程号为C08和C12的学生学号与成绩。

⑥检索没有选修C02号课程的学生姓名与年龄。

⑦检索选修了全部课程的学生姓名。

⑧检索选修课程中包含了学生S05所学课程的学生学号。

⑨求女学生的总人数和平均年龄。

⑩统计选修了课程的学生人数。

selectsno,grade

fromsc

wherecno='

c06'

第1种查询方法——连接查询:

SELECTs.sno,sname

FROMs,sc

WHEREs.sno=sc.snoandcno='

;

第2种查询方法——嵌套查询:

SELECTsno,sname

FROMs

WHEREsnoin

(SELECTsno

FROMsc

WHEREcno='

);

嵌套查询(使用相关查询):

WHERE'

in

(SELECTcno

WHEREsno=s.sno);

第3种查询方法——使用存在量词的嵌套查询:

SELECTsno,sname

WHEREexists(SELECT*

WHEREs.sno=sc.snoandcno='

嵌套查询:

(SELECTsno

FROMsc

WHEREcnoin

FROMc

WHEREcname='

ENGLISH'

));

连接查询:

FROMs,c,sc

WHEREs.sno=sc.snoando=oandcname='

english'

;

SELECT*

FROMsc

WHEREcno='

C08'

orcno='

C12'

注:

这里输出选修表sc的所有列,除学生学号与成绩外,还有选课的课程号。

若某个学生同时选修了C08和C12两门课程,可通过选课的课程号予以区分。

SELECTA.sno,A.grade,B.grade

FROMscASA,scASB

WHEREA.sno=B.snoandA.cno='

andB.cno='

;

SELECTsname,age

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

当前位置:首页 > 求职职场 > 简历

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

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