《数据库原理与应用》实验报告书II概要.docx
- 文档编号:27456479
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:23
- 大小:53.84KB
《数据库原理与应用》实验报告书II概要.docx
《《数据库原理与应用》实验报告书II概要.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》实验报告书II概要.docx(23页珍藏版)》请在冰豆网上搜索。
《数据库原理与应用》实验报告书II概要
《数据库原理与应用》
实验报告II
(2011—2012学年第二学期)
班级:
学号:
姓名:
教师:
陈培正
医药信息工程学院·数据决策
2012年2月
实验二数据库的附加/分离、备份/还原与导入/导出
一、实验目的
1、理解备份的基本概念,掌握各种备份数据库的方法。
2、掌握如何从备份中还原数据库。
3、掌握数据库中各种数据的导入\导出。
4、掌握数据库的附加与分离,理解数据库的附加与分离的作用。
二、实验内容
1、使用老师给的数据库文件“(中)学生-课程-选课_Data.MDF”在服务器上附加一个(中)学生-课程-选课数据库。
2、完成对该数据库的备份。
3、更改该数据库内容,比如,删除一个表,或者在数据库中增加一个新表。
4、还原该数据库,使它回到刚刚附加的时候的内容。
5、分离该数据库,并把它拷到自己带的U盘,回去后试着在自己机器上安装sqlserver2005,然后再重复操作一遍。
6、把“(中)学生-课程-选课”数据库中的“计算机系学生”表转换到ACCESS数据库中,尝试将其导出到EXCEL表格中。
7、把实验一创建的ACCESS数据库“学生-课程数据库”导入到SQLServer2005中。
注意:
每次实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中使用。
每次上课前,请也请带上之前实验课的数据备份。
三、实验要求
1、完成对数据库“学生-课程-选课”的附加分离、备份还原与导入\导出。
2、进行“实验内容”中的2-4,在完成3和4后,数据库分别有什么变化?
四、实验小结
1.完整备份和完整差异备份有什么区别?
2.什么情况下应该使用数据库的备份和还原?
什么情况下应该使用数据库的数据导入和导出?
3.什么时候需要使用数据库的附加和分离?
附加和分离的关系是什么?
4.以后上实验课你会使用以上技术吗?
你会选择哪一种?
为什么?
实验四简单查询
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握SQL中Select命令的使用。
二、实验内容及要求
用SQL语句完成下列查询。
使用数据库为老师提供的SCHOOL数据库。
1.统计各门课程所选修的人数,并把结果存储在一张新表中。
(提示:
用Select……Into……,groupby)
2.查询男生的资料。
3.查询所有计算机系的班级信息。
4.查询艾老师所教的课程号。
5.查询年龄小于30岁的女同学的学号和姓名。
6.查询所有被选修的课程号。
7.在学生基本信息表Student中检索学生的姓名和出生年份,输出的列名为STUDENT_NAME和BIRTH_YEAR。
8.在StudnetGrade中,求选修课程“0511”且分数排名为前10%学生的学号和得分。
9.查询选修课程号为“0109”或“0111”的学生学号。
10.查询课程“0101”的成绩在80与90之间的同学的学号。
11.查询平均成绩都在80分以上的学生学号及平均成绩。
三、实验小结
1.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
。
实验六带函数查询和综合查询
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握带函数查询和综合查询的使用。
二、实验内容及要求
用SQL语句完成下列功能。
使用数据库为老师提供的SCHOOL数据库。
1.统计年龄大于30岁的学生的人数。
2.统计数据结构有多少人80分或以上。
3.统计各系开设班级的数目(系名称、班级数目),并创建结果表。
4.找出最多人选修的三门课的课程编号,以及统计选修人数,并按人数降序排列。
5.统计每科目的最高分、最低分,平均分、总分,并以中文列名显示。
6.所有成绩都在70分以上的学生姓名(提示:
使用子查询)
7.“数据库”课程得最高分的学生的姓名、性别和所在系(提示:
使用子查询)
8.至少选修了两门课及以上的学生姓名和性别
9.检索至少选修课程“数据结构”和“C语言”的学生学号
10.列出所有班名、班主任、班长、系名。
(请使用连接查询;进一步考虑使用外连接,因为很多班级可能是没有班长的,考虑需要显示所有班级的信息)
三、实验小结
1.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验八视图的操作、索引的创建与删除
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握视图的创建、修改和删除。
3.掌握使用T-SQL命令对表创建和删除索引。
二、实验内容及要求
用SQL语句完成下列功能。
使用数据库为老师提供的SCHOOL数据库。
(一)、视图的操作
1.建立一视图View_CSTeacher,列出计算机系各个老师的资料(姓名、性别、职称)。
2.建立一视图View_Class,列出每个班级的名称、系别和班级人数。
3.建立一视图View_Student,列出每个学生的学号、选修课程门数和平均成绩,并按平均成绩从大到小排列。
4.查询视图View_Student。
5.修改视图View_Student,列出每个学生的学号、姓名、选修课程门数和平均成绩。
6.要通过视图View_Student,将学号为“000503002”的平均成绩改为90分,是否可以实现?
并说明原因
7.删除视图View_CSTeacher。
(二)、索引的创建与删除
1.分别建立以下索引(如果不能成功建立,请分析原因)
(1)在Student表的Sname列上建立普通降序索引。
(2)在Course表的Cname列上建立唯一索引。
(3)在SC表的Sno列上建立聚集索引。
(4)在SC表的Sno(升序),Cno(升序)和Grade(降序)三列上建立一个普通索引。
2.删除索引
(1)将SC表的Sno列上的聚集索引删掉。
三、实验小结
1.试述视图的优点;思考基本表与视图的区别和联系。
2.是否所有视图都可以更新?
为什么?
3.了解索引类型并比较各类索引的不同之处。
4.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十数据完整性
一、实验目的
1、熟悉通过SQL对数据进行完整性控制。
熟练掌握数据库三类完整性约束(实体完整性、用户自定义完整性、参照完整性)
2、了解SQLSERVER的违反完整性处理措施。
3、了解主键(PRIMARYKEY)约束、外键(FOREIGNKEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、DEFAULT约束、允许空值约束。
二、实验内容及要求
用SQL语句完成下列功能。
使用数据库为老师提供的SCHOOL数据库。
使用SQL对数据进行完整性控制(三类完整性、CHECK短语、CONSTRAIN字句、触发器)。
用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。
(一)、认真学习三类完整性、CHECK短语、CONSTRAIN字句的使用,完成下列内容。
列名
中文解释
数据类型
空值
说明
Stu_id
学号
Int
否
主键,标识种子(200601,1)
Stu_name
姓名
Varchar(8)
否
唯一性约束
Stu_sex
性别
Varchar
(2)
否
默认值为“女”
Birthday
出生年月
Smalldatetime
否
Age
年龄
计算列,计算公式:
year(getdate())-year(birthday)
Phone
联系电话
Varchar(15)
‘3935’开头,共8位数字
(1)根据上表,建立数据表Table1。
(2)先建立只含各个基本列(列名和数据类型)的Table3,然后通过ALTERTABLE语句为其增加各个约束。
(二)、验证数据库约束
实验中涉及两张表:
部门表、职工表。
部门表包括部门号、名称、经理名、地址、电话号以及一个部门号主键约束和一个名称的唯一性约束。
职工表包括职工号、姓名、年龄、职务、工资、部门号以及一个职工号的主键约束、一个部门好的外键约束和一个年龄的检查约束。
本实验主要是通过对这两张表的操作来验证数据库约束的相关概念。
1、建立数据库和相关表结构
先创建数据库company,按默认设置。
然后在company中创建两张表。
代码如下:
usecompany
createtable部门
(部门号char(4),
名称varchar(20)notnull,
经理名varchar(8),
地址varchar(50),
电话号varchar(20),
constraintPK_部门号primarykey(部门号),--主键
constraintUQ_名称unique(名称)--唯一键
)
createtable职工
(职工号char(4),
姓名varchar(8)notnull,
年龄int,
职务varchar(10),
工资money,
部门号char(4),
constraintPK_职工号primarykey(职工号),--主键
constraintFK_部门号foreignkey(部门号)references部门(部门号)ondeletecascade,--外键
constraintCK_年龄check(年龄<=60)--检查约束
)
2、验证主键(PRIMARYKEY)约束
insertinto部门values('0001','财务科','张三','湖北汽车工业学院','8238787')
如果再次insertinto部门values('0001','财务科','张三','湖北汽车工业学院','8238787'),则会违反了PRIMARYKEY约束'PK__部门__571DF1D5'。
不能在对象'部门'中插入重复键。
3、验证唯一性(UNIQUE)约束
insertinto部门values('0002','财务科','张三','湖北汽车工业学院','8238787')
如果执行insertinto部门values('0002','财务科','张三','湖北汽车工业学院','8238787'),则会违反了UNIQUEKEY约束'UQ__部门__5812160E'。
不能在对象'部门'中插入重复键。
4、验证检查(CHECK)约束
insertinto部门values('0002','教务科','李四','湖北汽车工业学院','8238787')
insertinto部门values('0003','人事科','王二','湖北汽车工业学院','8238787')
insertinto职工values('0001','张伟','30','科长',2000,'0001')
insertinto职工values('0002','李红','25','副科长',1500,'0001')
insertinto职工values('0003','王强','33','科长',2000,'0002')
insertinto职工values('0004','赵东','34','副科长',1500,'0002')
insertinto职工values('0005','陈三','29','科长',2000,'0003')
insertinto职工values('0006','孙波','28','副科长',1500,'0003')
如果执行insertinto职工values('0007','陈红','70','副科长',1500,'0003'),则会INSERT语句与COLUMNCHECK约束'CK__职工__年龄__656C112C'冲突。
该冲突发生于数据库'company',表'职工',column'年龄'。
5、验证外键(FOREIGN)约束
当指定ondeletecascade时为级联删除,删除部门表记录时,职工表中相关的记录也会同时删除
deletefrom部门where部门号='0001'
deletefrom部门where部门号='0002'
deletefrom部门where部门号='0003'
如果不指定ondeletecascade时默认为受限删除,删除部门表记录时,则会DELETE语句与COLUMNREFERENCE约束'FK__职工__部门号__6D0D32F4'冲突。
该冲突发生于数据库'company',表'职工',column'部门号'。
四、实验小结
1.什么是数据库的完整性?
什么是数据库的完整性约束条件?
2.思考各类完整性约束对于数据库的数据检查有何作用?
3.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十二熟悉PowerDesigner数据库设计
一、实验目的
1.熟悉PowerDesigner开发环境。
2.掌握数据库设计方法。
3.掌握利用PowerDesigner进行数据库设计。
二、实验内容及要求
本实验采用PowerDesigner12.5为例。
其他版本也可以,操作流程类似。
使用PowerDesigner完成如下内容:
1.建立概念模型,模型名称为“学生选课数据库”。
2.在“学生选课数据库”概念模型中,建立一个学生实体,一个选题实体。
学生实体包括学号,性别,姓名,学历,身份证。
选题实体包括学号,课程号,成绩。
3.为学生实体和选题实体建立1:
n联系。
4.在“学生选课数据库”概念模型中,建立一个职工实体,包括编号,姓名。
职工实体中有一个为领导。
建立实体内部的1:
n联系。
三、实验小结
1.思考数据库设计的作用?
如何设计一个有效的数据库?
2.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十四Transact-SQL编程
一、实验目的
1.了解嵌入式SQL和ODBC编程。
2.理解常量与变量的区别。
3.熟练掌握变量的声明与使用,各种类型的运算符的使用及Transact-SQL中控制语句的使用。
二、实验内容及要求
(一)Transact-SQL编程
1、T-SQL流程控制语句。
请说出下面代码的功能或者输出结果。
1)、begin…end
begin
declare@myvarfloat
set@myvar=456.256
begin
print'变量@myvar的值为:
'
printcast(@myvarasvarchar(12))
end
end
功能为:
结果为:
2)、if…else…
useschool
if(selectavg(grade)fromStudentGradewhereCourse_id='0506')>80
begin
print'课程:
'
print'考试成绩还不错'
end
else
begin
print'课程:
'
print'考试成绩还一般'
end
功能为:
结果为:
3)、简单的case语句举例
useschool
go
selectTeac_nameas'姓名',2012-year(Birthday)as'年龄',
caseTechPost
when'教授'then'高级职称'
when'讲师'then'中级职称'
else
'初级职称'
end
fromteacher
go
功能为:
结果为:
4)、搜索case语句举例
useschool
go
selectStu_id,Course_id,grade,
case
whengrade>=90then'A'
whengrade>=80then'B'
whengrade>=70then'C'
whengrade>=60then'D'
else
'E'
end
fromStudentGrade
whereCourse_id='0511'
go
功能为:
结果为:
5)、while语句
declare@sint,@iint
set@i=0
set@s=0
while@i<=100
begin
set@s=@s+@i
set@i=@i+1
end
print'1+2+...+100='+cast(@saschar(25))
功能为:
结果为:
6)、goto语句
declare@sint,@iint
set@i=0
set@s=0
my_loop:
set@s=@s+@i
set@i=@i+1
if@i<=100gotomy_loop
print'1+2+...+100='+cast(@saschar(25))
功能为:
结果为:
2、请编写程序完成以下功能:
1)给出一个变量a,并赋值为80,在成绩表中统计0501这门课程大于a值的有几人?
2)定义一个长度为9的可变长型字符变量,并分别给其赋值“WelcometoBeijing”及“Beijing”,观察其执行结果。
三、实验小结
1、sqlserver还提供给开发者自定义函数,如标量函数、表值函数等,你能否查阅资料或者根据老师提供的视频来定义这些函数,并完成一些功能呢?
例如:
定义一函数,函数的自变量是学生的姓名,函数值是这个学生的总成绩。
实验十六用visualstudio连接数据库
一、实验目的
学会ASP.NET和ADO.NET数据库连接、数据操程序编写,熟练使用MicrosoftVisualStudio2005开发平台开发学生学籍管理系统小型数据库应用系统。
二、实验内容及要求
1.连接SQLServer的数据访问编程实例
2.利用MicrosoftVisualStudio2005开发平台开发一个学生学籍管理系统小型数据库应用系统,对前面实验所建立的school数据库中的数据通过应用系统界面进行更新和查询等操作。
三、实验小结
1.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
附录:
SchooI数据库说明
School有关学校成绩、课程管理的数据库,该学校基本的情况如下:
某学校有多个系,每个系包含一定数量的老师和班级,每个班级包含一定数量的学生。
一个老师可担任一个或多个本系班级的管理,一个班级有且只有一个班长。
学生学习多门课程,一位老师可以担任一门或多门课程,某一门课程也可有多位老师任教,但某一班级某一门课程只能由一位老师任教。
Deparment表(系别资料表)
列名
中文解释
数据类型
空
检查
键/索引
Depar_id
系编号
Varchar
(2)
否
主键,聚集
Depar_name
系名称
Varchar(50)
否
Phone
联系电话
Varchar(8)
否
是1
PhoneCHECK约束定义为(PhoneLIKE‘3935[0-9][0-9][0-9][0-9]’)
Teacher表(教师基本资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Teac_id
教师编号
Varchar(4)
否
主键,聚集
Teac_name
姓名
Varchar(8)
否
Teac_sex
性别
Varchar
(2)
Birthday
出生日期
Smalldatetime
TechPost
级别(职称)
Varchar(10)
‘讲师’
Depar_id
所属系别编号
Varchar
(2)
外键
Deparment(Depar_id)
Class表(班级基本资料表)
列名
中文解释
数据类型
空
键/索引
Class_id
班级编号
Varchar(6)
否
主键,聚集
Class_name
班级名称
Varchar(20)
否
Director
班主任
Varchar(4)
外键
Teacher(Teac_id)
Monitor
班长
Varchar(9)
外键
Student(Stu_id)
Depar_id
所属系别编号
Varchar
(2)
外键
Deparment(Depar_id)
Student表(学生基本资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Stu_id
学号
Varchar(9)
否
主键,聚集
Stu_name
姓名
Varchar(8)
否
Stu_sex
性别
Varchar
(2)
否
‘男’
Birthday
出生年月
Smalldatetime
否
Phone
联系电话
Varchar(15)
Address
家庭地址
Varchar(100)
Class_id
所在班级编号
Varchar(4)
否
外键
Class(Class_id)
Course表(课程资科表)
列名
中文解释
数据类型
空
默认值
键/索引
Course_id
课程编号
Varchar(4)
否
主键,聚集
Course_name
课程名称
Varchar(20)
否
Course_hour
课时数
Smallint
否
60
Introduce
课程介绍
Varchar(200)
StudentGrade表(学生成绩资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Stu_id
学生编号
Varchar(9)
否
组合主键,外键
Student(Stu_id)
Course_id
课程编号
Varchar(4)
否
组合主键,外键
Course(Course_id)
Grade
成绩
Smallint
是1
GradeCHECK约束定义为(Grade>=0andGrade<=100)
CourseTeacher表(课程教师资料表)
列名
中文解释
数据类型
空
键/索引
Course_id
课程编号
Var
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理与应用 数据库 原理 应用 实验 报告书 II 概要