数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
数据库实验报告
医学工程学院
数据库实验报告
专业班级
生物医学工程10-01班
学生姓名及学号
课程教学班号
0001
任课教师
郑淑丽
实验指导教师
郑淑丽
实验地点
逸夫楼507
2012~2013年第二学期
实验一使用向导创建和删除数据库
一.实验目的
1.熟悉SQLServer中SQLServerManagementStudio的环境
2.了解SQLServer数据库的逻辑结构和物理结构
3.掌握使用向导创建和删除数据库的方法
二.实验要求
1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三.实验内容
建立一个数据库名为“EDUC”学籍管理系统,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”,物理文件名为“student_data.mdf,存放路径为“E:
\sql_data”。
日志文件的逻辑文件名为“student_log”,物理文件名为“student_log.ldf”,存放路径为“E:
\sql_data”。
四.实验步骤
1.使用SQLServerManagementStudio(简称SSMS)创建数据库。
(1)启动SSMS
(2)建立数据库,结果如下图示
(3)使用向导删除上面的数据库
五.实验总结
本次实验使我熟悉SQLServer中SQLServerManagementStudio的环境,了解SQLServer数据库的逻辑结构和物理结构,掌握使用向导创建和删除数据库的方法
实验二使用SQL语句创建和删除数据库
一.实验目的:
1.了解SQLServer2005数据库的逻辑结构和物理结构。
2.掌握使用SQL语句创建和删除数据库。
二.实验内容
使用SQL语句创建数据库userdb1。
三.实验要求
1.熟练使用查询分析器进行数据库的创建和删除操作。
2.完成实验报告。
四.实验步骤
1.创建数据库userdb1的SQL语句。
2.根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC.
3.用SQL语句删除步骤1建立的数据库userdb1。
dropdatabaseuserdb1
5.实验总结
本次实验使我了解了SQLServer2005数据库的逻辑结构和物理结构,掌握使用SQL语句创建和删除数据库。
实验三使用SQL语句创建和删除表
一.实验目的
1.了解表的结构特点。
2.了解SQLServer的基本数据类型。
3.学会使用T-SQL语句创建表。
二.实验要求
1.完成SQL语句创建和删除基本表。
2.完成实验报告。
三.实验内容
在数据库EDUC中,创建如下几个表:
表3.1class表(班级信息表)
字段名称
类型
允许空值
主键
说明
ClsNO
Char(6)
NOTNULL
是
班号
ClsName
Varchar(16)
NOTNULL
班名
Director
Varchar(10)
NULL
辅导员
Specialty
Varchar(30)
NULL
专业
表3.2student表(学生信息表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号
Sname
Varchar(10)
NOTNULL
姓名
Sex
Char
(2)
性别:
男、女
ClsNO
Char(6)
NULL
班级的编号,(外键)参照表Class
Saddr
Varchar(20)
住址
Sage
numeric(3,0)
年龄,大于10,但小于30岁
Height
Decimal(4,2)
身高
表3.3course表(课程信息表)
字段名称
类型
允许空值
主键
说明
Cno
Char(4)
NOTNULL
是
主键
Cname
Varchar(16)
NOTNULL
课程的名称
Cpno
char(4)
NULL
先修课程的课程号(外键),参照cno
Ccredit
Tinyint
学分
表3.4sc表(学生选课成绩表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号,参照Student,与Cno组成主键
CNO
Char(4)
NOTNULL
是
课程号,参照Course
grade
Numeric(4,1)
NULL
成绩
四.实验步骤
1.打开查询窗口,输入创建基本表的sql语句。
2.点击“执行”按钮,完成表的创建。
3.用上述方法创建其他表。
4.将以上创建表的SQL语句以.SQL文件的形式保存在磁盘上。
建立的图标的SQL语句如下:
Student表:
Class表:
Course表
SC表:
5.实验总结
本次实验是我掌握了如何应用SQL语句建表,并且深刻了解了外码,主码的概念。
实验四数据更新操作
一.实验目的
1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
2.能将这些更新操作应用于实际操作中去;
二.实验要求
1.完成下面的实验内容,并提交实验报告;
2.在实验报告中附上相应的代码;
三.实验内容
(1)向表(Student)中插入数据
Sno
Sname
Ssex
ClsNO
Saddr
Sage
Height
20090101
王军
男
CS01
下关40#
20
1.76
20090102
李杰
男
CS01
江边路96#
22
1.72
20090306
王彤
女
MT04
中央路94#
19
1.65
19940107
吴杪
女
PH08
莲化小区74#
18
1.60
插入数据之后使用命令:
Select*fromStudent;检查插入数据的正确性
查询结果如下:
(2)向表(Class)中插入数据
ClsNO
ClsName
Director
Specialty
CS01
计算机一班
王宁
计算机应用
CS02
计算机二班
王宁
计算机应用
MT04
数学四班
陈晨
数学
PH08
物理八班
葛格
物理
插入数据之后使用命令:
Select*fromClass;检查插入数据的正确性
查询结果如下:
(3)向表(Course)中插入数据
Cno
Cname
Cpno
Credit
0001
高等数学
Null
6
0003
计算机基础
0001
3
0007
物理
0001
4
插入数据之后使用命令:
Select*fromCourse;检查插入数据的正确性
查询结果如下:
(4)向表(SC)中插入数据
SNO
CNO
Grade
20090101
0001
90
20090101
0007
86
20090102
0001
87
20090102
0003
76
20090306
0001
87
20090306
0003
93
19940106
0007
85
结果如下:
(5)对于student表,将所有班级号为‘CS01’的,并且年龄小于20岁的学生的班级号改为‘CS02’。
结果如下:
(6)对于student表,删掉所有年龄大于20岁,并且专业号为‘CS02’的学生的记录。
对于student表,插入一条新记录,它的具体信息为,学号:
20071101、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
结果如下
(7)对于student表,将年龄最小的学生的家庭地址去掉。
结果如下:
(8)对于student表,将平均年龄最小的一个班级编号改为‘GL01’
结果如下:
因为没有保存查询结果,所以只把程序写上了。
程序如下:
UPDATEStudent
SETClsNo=’GL01’
WHEREClsNo=(selecttop1ClsNo
FROM(SELECTClsNo,AVG(Sage)a
FROMStudent
GROUPBYClsNo)AVGR
ORDERBYa)
5.实验总结:
通过本次实验,熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
能将这些更新操作应用于实际操作中去。
实验五数据查询
一.实验目的
1.观察查询结果,体会SELECT语句实际应用;
2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。
3.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二.实验要求
1.完成简单查询和连接查询操作,并验收实验结果提交实验报告
三.实验内容
所有的查询全部用SQL语句实现。
此部分查询包括投影、选择条件表达、数据排序等。
对EDUC数据库实现以下查询:
1)查询计算机应用专业的学生学号和姓名;
2)查询选修了课程的学生学号;
3)查询选修课程0001且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.75输出;
4)查询计算机应用和数学专业的姓“张”的学生的信息。
5)查询“0001”课程的成绩高于张三的学生学号和成绩;
6)查询没有选修“0002”课程的学生姓名;
四.实验步骤
打开查询窗口,输入SQL查询语句,点击“执行”按钮,查看查询结果。
1)查询计算机应用专业的学生学号和姓名;
selectsno,sname
fromstudent,class
wherestudent.clsno=class.clsnoand
class.specialty='计算机应用';
2)查询选修了课程的学生学号;
selectsno
fromsc
wheresnoisnotnull;
3)查询选修课程0001且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.75输出;
selectsno,grade*0.75
fromsc
wherecno='0001'and
gradebetween80and90;
4)查询计算机应用和数学专业的姓“张”的学生的信息。
select*
fromstudent,class
wheresnamelike'张__'and
student.clsno=class.clsnoand
(specialty='计算机应用'or
specialty='数学');
5)查询没有选修“0002”课程的学生姓名;
selectdistinctsname
fromstudent,sc
wherestudent.sno=sc.snoand
cno!
='0002'
5.实验总结:
通过本次实验,掌握了观察查询结果,体会了SELECT语句实际应用;能够在查询分析器中使用SELECT语句进行简单查询。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
实验六使用聚集函数的SELECT语句
一.实验目的
1.熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
2.进一步掌握SQLServer查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。
二.实验准备
1.了解SELECT语句的GROUPBY和ORDERBY子句的作用。
2.了解统计函数和分组统计函数的使用方法。
3.熟悉查询分析器的运行环境。
三.实验要求
1.在实验之前做好准备。
2.完成实验,并验收实验结果提交实验报告。
四.实验内容
在数据库EDUC中用SQL语句实现如下查询:
1)求学生的总人数。
2)求选修了课程的学生人数。
3)求课程的课程号和选修该课程的人数
4)求选修课程超过2门课的学生学号。
五.实验步骤
1)求学生的总人数.
selectCOUNT(*)
fromstudent;
2)求选修了课程的学生人数。
selectCOUNT(distinctsno)
fromsc;
3)求课程的课程号和选修该课程的人数。
selectCOUNT(cno)
fromsc
groupbycno;
4)求选修课程超过1门课的学生学号。
selectsno
fromsc
groupbysno
havingCOUNT(*)>1;
5.实验总结:
通过本次实验,熟练掌握了数据查询中的分组、统计、计算和组合的操作方法;进一步掌握SQLServer查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。
实验七视图的定义与使用
一.实验目的
1.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
2.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;
3.学习灵活熟练的进行视图的操作,认识视图的作用。
二.实验要求
1.在实验开始之前做好准备工作。
2.实验之后提交实验报告,思考视图和基本表的区别
三.实验内容
1.定义视图
在EDUC数据库中,已Student、Course和SC表为基础完成一下视图定义:
1)将Student,Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G;
2)定义一个反映学生出生年份的视图V_YEAR;
3)将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G;
4)将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。
2.使用视图
1)查询以上所建的视图结果。
2)查询平均成绩为90分及以上的学生学号、姓名和成绩;
3)查询课程成绩大于平均成绩的学生学号、课程号、成绩和平均成绩;
4)查询1994年出生的学生学号和姓名。
四.实验步骤
1.定义视图
1)将Student,Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G.
createviewv_sc_g
as
selectstudent.sno,sname,o,cname,grade
fromsc,student,course
wheresc.sno=student.snoand
o=o;
select*fromv_sc_g;
dropviewv_sc_g;
2)定义一个反映学生出生年份的视图V_YEAR.
createviewv_year
as
selectsno,sname,2013-sageage
fromstudent;
select*fromv_year;
3)将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G.
createviewv_avg_s_g
as
selectstudent.sno,COUNT(cno)cnum,avg(grade)avg_age
fromsc,student
wheresc.sno=student.sno
groupbystudent.sno;
2.使用视图
1)查询以上所建的视图结果。
如上图。
2)查询平均成绩为90分及以上的学生学号、姓名和成绩;
selectstudent.sno,sname,avg_age
fromv_avg_s_gs,student
wheres.sno=student.snoand
s.avg_age>='90';
3)查询1994年出生的学生学号和姓名。
selectsname,sno
fromv_year
whereage='1994';
5.实验总结
通过本次实验,熟悉和掌握了对数据表中视图的查询操作和SQL命令的使用;熟悉和掌握了对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;能灵活熟练的进行视图的操作,明白了视图的作用。