数据库原理实验答案Word文档下载推荐.docx

上传人:b****1 文档编号:5788664 上传时间:2023-05-05 格式:DOCX 页数:37 大小:413.69KB
下载 相关 举报
数据库原理实验答案Word文档下载推荐.docx_第1页
第1页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第2页
第2页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第3页
第3页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第4页
第4页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第5页
第5页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第6页
第6页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第7页
第7页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第8页
第8页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第9页
第9页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第10页
第10页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第11页
第11页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第12页
第12页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第13页
第13页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第14页
第14页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第15页
第15页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第16页
第16页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第17页
第17页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第18页
第18页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第19页
第19页 / 共37页
数据库原理实验答案Word文档下载推荐.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库原理实验答案Word文档下载推荐.docx

《数据库原理实验答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库原理实验答案Word文档下载推荐.docx(37页珍藏版)》请在冰点文库上搜索。

数据库原理实验答案Word文档下载推荐.docx

性别

字符串,长度为2

Sage

年龄

整数

允许空值

Sdept

所在系

字符串,长度为15

Courses表

Cno

课程号

字符串,长度为6

Cname

课程名

字符串,长度为20

PreCno

先修课程号

允许为空值

Credits

学分

SC表

Grade

成绩

具体约束为:

1、请用至少2种方法定义stu数据库中student表的主键sno;

2、为表course中的字段cname添加唯一值约束;

3、对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性:

1)删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;

2)修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;

3)修改course表cno字段值时,该字段在sc表中的对应值也应修改;

4)删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;

5)向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;

4、定义check约束,要求学生学号sno必须为10位字符,且不能以0开头,第二三位皆为0;

check(snolike‘[^0]00__________’)

5、定义stu数据库中student表中学生年龄值在16-25范围内;

6、定义stu数据库中student表中学生姓名长度在2-8之间;

check(len(sname)<

8)

7、定义stu数据库中student表中学生性别列中只能输入“男”或“女”;

8、定义stu数据库student表中学生年龄值默认值为20;

2.studentinfo数据库的3个表students,courses,sc表中输入若干纪录,内容为:

students

sno

sname

ssex

sage

sdept

20010101

Hone

M

19

Computer

20010102

Sue

F

20

20010103

Smith

Math

20030101

Allen

18

Automation

20030102

Deepa

21

Art

courses

cno

cname

ProCno

C1

English

4

C2

2

C3

Database

Sc

90

88

94

62

4、在上面的基础上分别向studentinfo数据库中的students,courses,sc表中添加少5条数据。

须满足三大约束条件

三、源程序:

createdatabasestudents

createtableStudents(

Snochar(10)primarykey,

Snamechar(8)check(len(Sname)>

=2andlen(Sname)<

=8),

Ssexchar

(2)check(Ssexin('

男'

'

女'

)),

Sageintcheck(Sage>

=16andSage<

=25)default20,

Sdeptchar(15)notnull

createtableCourses(

Cnochar(6)primarykey,

Cnamechar(20)unique,

PreCnochar(6)null,

Creditsintnull

createtableSC(

Snochar(10),

Cnochar(6),

Gradeintnull,

primarykey(Sno,Cno),

foreignkey(Sno)referencesStudents(Sno)

ondeletecascade,

foreignkey(Cno)referencesCourses(Cno)

ondeletecascade

onupdatecascade

四、主要问题和解决方法:

我们都对数据库不陌生,但是使用sql语句来使用数据库的还是第一次,感觉挺新鲜。

第一次使用,问题的难度不大,都可以自主完成。

五、测试数据及结果:

与预测结果一样。

6、心得体会与自我评价:

首次使用sql,感觉还好,但是我知道这只是一个开始,后面还有更加复杂的指令,这些都是从基础开始的,所以,即使这一次简单,还是要认真的对待。

实验

(二)

数据库的完整性约束实验时间:

2013-3-18

1. 

掌握主键约束、外键约束及及check约束的用法;

2. 

掌握默认值约束的应用;

3.了解规则、触发器的使用。

2、实验内容:

4、定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;

(不用做)

createdatabasestudentinfo

createtablestudents

(Snochar(10)primarykey,

Snamechar(8),

Ssexchar

(2),

Sagesmallint,

Sdeptchar(15))

createtablecourses

(Cnochar(6)primarykey,

Cnamechar(20)notnull,

PreCnochar(6),

Ccreditssmallint);

createtableSC

(Snochar(10),

Gradesmallint,

foreignkey(Sno)referencesstudents(Sno),

foreignkey(Cno)referencescourses(Cno));

INSERT

INTOStudents(Sno,Sname,Ssex,Sage,Sdept)

VALUES('

20010101'

Hone'

M'

19,'

Computer'

);

20010102'

Sue'

F'

20,'

20010103'

Smith'

Math'

20030101'

Allen'

18,'

Automation'

20030102'

Deepa'

21,'

Art'

对于sql语句,在之前也有过了一些接触,但是没有深入的去了解,涉及到了一些复杂的sql语句时,还是感到陌生,不过相信多加练习就会好的。

这次的实验是在上次的实验的基础上加上他的一些约束条件,相对来说也是比较简单的,操作也相对容易。

实验(三)

数据库单表查询实验时间:

2013-4-1

1.掌握SELECT语句的基本语法和查询条件表示方法;

2.掌握查询条件表达式和使用方法;

3.掌握GROUPBY子句的作用和使用方法;

4.掌握HAVING子句的作用和使用方法;

5.掌握ORDERBY子句的作用和使用方法。

1、以数据库原理实验三数据库中数据为基础,请使用T-SQL语句实现以下操作:

1)列出所有不姓刘的所有学生;

2)列出姓“沈”且全名为3个汉字的学生;

3)显示在1985年以后出生的学生的基本信息;

4)按照“性别、学号、姓名、年龄、院系”的顺序列出学生信息,其中性别按以下规定显示:

性别为男显示为男生,性别为女显示为女生,其他显示为“条件不明”;

5)查询出课程名含有“数据”字串的所有课程基本信息;

6)显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;

7)列出选修了‘1’课程的学生,按成绩的降序排列;

8)列出同时选修“1”号课程和“2”号课程的所有学生的学号;

9)列出课程表中全部信息,按先修课的升序排列;

10)列出年龄超过平均值的所有学生名单,按年龄的降序显示;

11)按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号,姓名,性别,出生年份,院系”;

12)显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>

=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”,若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”;

13)按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;

14)显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”;

15)显示选修的课程数大于3的各个学生的选修课程数;

16)按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;

选做题:

17)显示平均成绩大于“200515001”学生平均成绩的各个学生的学号、平均成绩;

18)显示选修每门课程的及格人数;

19)显示被选修最多的课程数和最少的课程数;

20)显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”;

21)列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;

1

selectstudent.*

fromstudent

wheresnamenotlike'

刘%'

wheresnamelike'

沈'

3

wheresage<

28

selectssex=

casewhenssex='

then'

男生'

whenssex='

女生'

else'

条件不明'

end,sno,sname,sdept

5

selectcname

fromcourse

wherecnamelike'

%数据%'

6

selectsno,sname,ssex,sage,sdept

wheresnolike'

[12349]%'

orsnolike'

7

selectstudent.sno,sname,grade

fromstudent,sc

whereCno='

1'

orderbyGradedesc

8

selectsno,Cno

fromsc

wherecno=1orcno=2

9

select*

orderbycpnoasc

10

selectsno,sname

wheresage>

(selectAVG(sage)fromstudent)

orderbysagedesc

11

selectsno学号,sname姓名,ssex性别,出生年份=year(GETDATE())-sage,sdept院系

12

selectsdept,sdept=

case

whenCOUNT(distinctsno)>

=5then'

规模很大'

=4andCOUNT(distinctsno)<

5then'

规模一般'

=2andCOUNT(distinctsno)<

4then'

规模小'

whenCOUNT(distinctsno)<

2then'

规模很小'

end

groupbysdept

13

selectsno,cno,grade

whereGrade>

=70andGrade<

=80

orderbyCnodesc,Gradedesc

14

select学生总人数=COUNT(distinctsno),平均年龄=AVG(sage)

15

selectsno,选修的课程数=COUNT(Cno)

groupbysno

havingCOUNT(Cno)>

16

selectcno,总人数=COUNT(distinctsno),最高成绩=MAX(grade),最低成绩=MIN(grade),平均成绩=AVG(grade)

groupbycno

orderbycnodesc

17

selectsno,平均成绩=AVG(grade)

havingAVG(Grade)>

(selectAVG(Grade)fromscwheresno='

200515001'

selectcno,count(sno)as合格人数

wheregrade>

60

selectsno,选课数=

whenMAX(Cno)=COUNT(Cno)then'

课程数最多'

whenMIN(Cno)=COUNT(Cno)then'

课程数最少'

havingMAX(Cno)=COUNT(Cno)orMIN(Cno)=COUNT(Cno)

selectsdept院系名称,

男生人数=sum(casewhenssex='

then1else0end),

女生人数=sum(casewhenssex='

then1else0end)

fromstudentgroupbysdept

whereGrade<

havingCOUNT(*)>

=2

这次的实验相对前面的两次实验就显得困难了许多,约束、限制的条件也不相同,对于题目的问题也比较不适应,所以做起来有点困难,不过参考书上的例子,最后还是做出来了。

虽然这一次的实验有很大的困难,但是克服了种种困难后完成了本次的实验,感觉收获很多,不仅进一步掌握了SQL的使用,还学会了使用SQL中的SELECT关键字。

实验(四)

数据库连接查询实验时间:

2013-4-29

1、掌握查询语句的一般格式;

2、熟练掌握单表查询、连接查询、集合查询、统计查询和嵌套查询。

3、熟悉连接查询嵌套查询等的应用。

设有一图书馆数据库,其中包括3个表,即图书表、读者表、和借阅表。

三个表的结构如下

图书表

书号

图书唯一的编号

书名

图书的名称

字符串,长度为50

空值

作者

图书的编著者名

字符串,长度为30

出版社

图书的出版社

单价

出版社确定的图书的单价

浮点型,float

读者表

读者号

读者唯一的编号

字符串,长度为10

读者姓名

字符串,长度为8

读者的性别

字符串,长度为2

办公电话

读者性别

部门

读者办公电话

借阅表

借出日期

借出图书的日期

字符串,长度为8,为’yymmdd’

归还日期

归还图书的日期

(1)针对以上3个表,用SQL语言完成以下各项多表连接查询

1)查询借了书的读者的基本信息及其借阅情况

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

3)查询借阅了机械工业出版社出版,并且书名中包含‘数据库’三个字的图书的读者,并显示读者号、姓名、书名、出版社,借出日期、归还日期

4)查询办公室电话为‘88320701’的所有读者的借阅情况,要求包括借阅了图书的读者和没有借阅的读者,显示他们的读者号、姓名、书名及其借阅日期

(2)用SQL语言完成以下各项子查询:

1)查询单价小于平均单价的图书的书号,书名及其出版社

2)查询单价比‘机械工业出版社’最高单价还高的图书书名及单价

3)查询‘人民邮电出版社’单价比‘机械工业出版社’最低单价还低的图书书名及单价

4)查询已归还的图书的信息

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

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

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

8)查询与‘王平’的办公电话相同的读者的姓名

3、源程序:

select读者.*,借阅.*

from读者,借阅

where读者.读者号=借阅.读者号;

select读者.读者号,姓名,图书.书名,借阅.借出日期,归还日期

from读者,图书,借阅

where读者.读者号=借阅.读者号and图书.书号=借阅.书号;

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

where读者.读者号=借阅.读者号and图书.书号=借阅.书号

and图书.出版社='

机械工业出版社'

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

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2