数据库实验报告第一次.docx

上传人:b****8 文档编号:10870648 上传时间:2023-02-23 格式:DOCX 页数:12 大小:152.74KB
下载 相关 举报
数据库实验报告第一次.docx_第1页
第1页 / 共12页
数据库实验报告第一次.docx_第2页
第2页 / 共12页
数据库实验报告第一次.docx_第3页
第3页 / 共12页
数据库实验报告第一次.docx_第4页
第4页 / 共12页
数据库实验报告第一次.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据库实验报告第一次.docx

《数据库实验报告第一次.docx》由会员分享,可在线阅读,更多相关《数据库实验报告第一次.docx(12页珍藏版)》请在冰豆网上搜索。

数据库实验报告第一次.docx

数据库实验报告第一次

1、

数据库实验

姓名:

冯林峰

学号:

班级:

实验名称:

列表创建与查询

实验二:

新建数据库student_test,用Transcat-SQL语言创建课本P82给出的3张表(student表增加一列属性:

班级),用Transcat-SQL语言完成数据插入。

第一个表格

usestudent_test

createtablestudent

学号char(10)NOTNULLprimarykey,

姓名char(8)NULL,

性别char

(2)NULL,

年龄intNULL,

所在系char(20)NULL,

usestudent_test

insertstudent

values

('','李勇','男',20,'CS')

insertstudent

values

('','刘晨','女',19,'CS')

insertstudent

values

('','王敏','女',18,'MA')

insertstudent

values

('','张立','男',19,'IS')

GO

第二个表格

usestudent_test

createtableCourse

课程号intNULL,

课程名char(10)NULL,

先行课intNULL,

学分intNULL,

usestudent_test

insertCourse

values

(1,'数据库',5,4)

insertcourse

values

(2,'数学',null,2)

insertcourse

values

(3,'信息系统',1,4)

insertcourse

values

(4,'操作系统',6,3)

insertcourse

values

(5,'数据结构',7,4)

insertcourse

values

(6,'数据处理',null,2)

insertcourse

values

(7,'PASCAL',6,4)

GO

第三个表格

usestudent_test

createtableSC

学号char(10)NULL,

课程号intNULL,

成绩intNULL,

usestudent_test

insertSC

values

('',1,92)

insertSC

values

('',2,85)

insertSC

values

('',3,90)

insertSC

values

('',2,90)

insertSC

values

('',3,80)

GO

2、完成下列4项查询操作。

1)查询数学系姓王的学生姓名及年龄,并按学生年龄降序排序;

2)查询1班的选修课平均成绩>80的学生姓名和学号;//没有班级一项用所在系CS代替

3)查询每个班级每门课程的选课人数和平均分;//没有班级一项用所在系代替

4)查询李爽同学没选修的课程名;

1)

查询代码:

结果:

select姓名,年龄

fromStudent

where所在系='MA'and姓名like'王%'

orderby年龄desc

2)

查询代码:

结果:

select姓名,Student.学号

fromStudent,SC

whereStudent.学号=SC.学号andStudent.班级='3班'

groupby姓名,Student.学号havingavg(成绩)>80;

3)

查询代码:

结果:

select班级,课程名,count(a.学号)as'选课人数',avg(成绩)as'平均分'

fromStudentajoinSCbona.学号=b.学号joinCourseconb.课程号=c.课程号groupby班级,课程名;

4)

查询代码:

结果:

select课程名

fromCourse

where课程号notin

(select课程号

fromSC

where学号in

(select学号

fromStudent

where姓名='李勇'))

实验三:

1、设计若干张表,合理地表示如下信息:

学号,姓名,性别,生日,班级,系科,选修课程,课程名,课程编号,学分,课程容量,选课人数,成绩,任课教师(注意:

同一门课有多名任课教师)。

实验想法:

在建立表格的时候首先要考虑吧查询的问题,可以先把属性有联系的连接在一起,于是便有了student,course,和SC表格,而要通过表格中的属性将三张表格联系起来,于是便有了一下表格。

usestudent_

createtableStudent(

学号intnotnull,

姓名char(20),

性别char(40)default('男'),

生日datetimecheck(生日>'1980-01-01'and生日<'2020-01-01'),

班级char(40),

系科char(80)

);

usestudent_

createtableCourse

课程号intnotnull,

课程名varchar(80),

学分int,

选课人数int,

课程容量int

);

usestudent_

createtableSC(

学号int,

课程号int,

任课教师varchar(40),

成绩int

);

usestudent_

insertCourse

values

('1','数据库',4,56,120)

insertCourse

values

('2','数学',2,45,100)

insertCourse

values

('3','信息系统',3,80,100)

insertCourse

values

('4','操作系统',3,67,120)

insertCourse

values

('5','数据结构',4,78,100)

insertCourse

values

('6','信息处理',2,45,110)

insertCourse

values

('7','PASCAL语言',3,45,120);

usestudent_

insertStudent

values

(,'李勇','男','1993-02-02','2班','CS')

insertStudent

values

(,'刘晨','女','1994-02-04','3班','CS')

insertStudent

values

(,'王敏','女','1993-09-11','1班','MA')

insertStudent

values

(,'张立','男','1990-12-12','1班','IS');

 

usestudent_

insertSC

values

(,1,'王老师',92)

insertSC

values

(,2,'李老师',85)

insertSC

values

(,3,'张老师',88)

insertSC

values

(,2,'刘老师',90)

insertSC

values

(,3,'谢老师',80);

 

设计查询语句,完成以下查询任务

1)查询给李勇同学授课的所有任课教师;

解法一:

 

查询代码

查询结果

usestudent_

select任课教师

fromSC

whereSC.学号in

(select学号

fromStudent

where姓名='李勇');

 

解法二:

 

查询代码

查询结果

usestudent_

select任课教师

fromSC,Student

whereSC.学号=student.学号ANDstudent.姓名='李勇'

 

2)查询某任课教师所授的每门课程中单科成绩最高的学生学号、姓名(任课教师可指定,如“李爽”)。

查询代码

查询结果

Usestudent_

select学号,姓名

fromStudent

where学号=

(select学号

fromSC

where成绩in

(selectmax(成绩)

fromSC

where课程号in

(select课程号

fromSC

where任课教师='刘老师'

));

 

实验问题:

首先老师说了三张表格有问题,于是我仔细思考了,发现最大的问题其实是数据冗余,因为在查询是,若是查询某门课的任课老师时会出现大量的数据重复,因为这任课老师是放在学生学号后面的,一个老师可能会教很多学生,这给信息查询和修改都带来了不方便,于是,我想的是出现第四章表格,即把课程号和任课老师拎出来,重新建立一张表格。

即SC表格变为以下两张表格:

这样多了两张表格之后可以有效地解决数据冗余问题,并且使根据课程查询任课老师更为便捷,不过还是没有解决数据更新冗余问题。

而想了很久之后也没有有效地方法,所以我心中最好的表格也只能是这样了。

 

实验感想:

数据库实验是一门很综合的实验,因为要考虑的东西很多,就像这个实验,虽然三个表格看起来没有什么问题,但是其实他是会出现大量的数据冗余的,所以我们考虑问题要全面,很多东西,不仅要考虑到实现,还要想到在实际应用中实现的困难以及不方便,经过这次实验,我对这门语言也有了一定的了解,收获很大。

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

当前位置:首页 > 法律文书 > 调解书

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

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