《数据库原理与应用》实验报告书II.docx

上传人:b****8 文档编号:30403754 上传时间:2023-08-14 格式:DOCX 页数:24 大小:46.73KB
下载 相关 举报
《数据库原理与应用》实验报告书II.docx_第1页
第1页 / 共24页
《数据库原理与应用》实验报告书II.docx_第2页
第2页 / 共24页
《数据库原理与应用》实验报告书II.docx_第3页
第3页 / 共24页
《数据库原理与应用》实验报告书II.docx_第4页
第4页 / 共24页
《数据库原理与应用》实验报告书II.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

《数据库原理与应用》实验报告书II.docx

《《数据库原理与应用》实验报告书II.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》实验报告书II.docx(24页珍藏版)》请在冰豆网上搜索。

《数据库原理与应用》实验报告书II.docx

《数据库原理与应用》实验报告书II

 

《数据库原理与应用》

实验报告II

(2011—2012学年第二学期)

 

班级:

学号:

姓名:

教师:

陈培正

 

医药信息工程学院·数据决策

2012年2月

目录

实验二数据库的附加/分离、备份/还原与导入/导出1

实验四简单查询3

实验六带函数查询和综合查询5

实验八视图的操作、索引的创建与删除7

实验十数据完整性10

实验十二熟悉PowerDesigner数据库设计13

实验十四Transact-SQL编程14

实验十六用visualstudio连接数据库16

附录:

SchooI数据库说明17

实验二数据库的附加/分离、备份/还原与导入/导出

一、实验目的

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岁的学生的人数。

selectCOUNT(*)

fromStudent

whereYEAR(birthday)<1974

 

2.统计数据结构有多少人80分或以上。

selectCOUNT(*)数据结构大于80分的总人数

fromStudentGrade,Course

whereStudentGrade.course_id=Course.Course_idand

Course_name='数据结构'and

Grade>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。

createtabletable1

(stu_idintprimarykey,

stu_namevarchar(8)unique,

stu_sexvarchar

(2)notnulldefault(‘女’),

birthdaysmalldatetimenotnull,

agesmallint,

phonevarchar(15)check(phonebetween39350000and39359999)

 

(2)先建立只含各个基本列(列名和数据类型)的Table3,然后通过ALTERTABLE语句为其增加各个约束。

 

createtabletable3

(stu_idint,

stu_namevarchar(8),

stu_sexvarchar

(2),

birthdaysmalldatetime,

agesmallint,

phonevarchar(15)

 

altertabletable3

addconstraintstu_idprimarykey;

altertabletable3

addconstraintstu_nameunique;

altertabletable3

addconstraintstu_sexnotnull;

altertabletable3

addconstraintbirthdaynotnull;

altertabletable3

addagesmallintcheck(age=getdate()-year(birthday));

altertabletable3

addphonevarchar(15)check(phonebetween39350000and39359999)

 

(二)、验证数据库约束

实验中涉及两张表:

部门表、职工表。

部门表包括部门号、名称、经理名、地址、电话号以及一个部门号主键约束和一个名称的唯一性约束。

职工表包括职工号、姓名、年龄、职务、工资、部门号以及一个职工号的主键约束、一个部门好的外键约束和一个年龄的检查约束。

本实验主要是通过对这两张表的操作来验证数据库约束的相关概念。

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)

外键

Deparm

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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