SQL上机操作实验.docx

上传人:b****5 文档编号:5651596 上传时间:2022-12-30 格式:DOCX 页数:48 大小:1.82MB
下载 相关 举报
SQL上机操作实验.docx_第1页
第1页 / 共48页
SQL上机操作实验.docx_第2页
第2页 / 共48页
SQL上机操作实验.docx_第3页
第3页 / 共48页
SQL上机操作实验.docx_第4页
第4页 / 共48页
SQL上机操作实验.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

SQL上机操作实验.docx

《SQL上机操作实验.docx》由会员分享,可在线阅读,更多相关《SQL上机操作实验.docx(48页珍藏版)》请在冰豆网上搜索。

SQL上机操作实验.docx

SQL上机操作实验

《SQLserver2000》上機操作实验

一、本实验课在培养实验能力中的地位及作用

数据库技术是一个理论和实际紧密联系的技术,而SQLserver2000则是数据库具体应用的一个数据库开发系统。

在学习过程中,除了解SQLserver系统的设计环境及各种工具的使用方法、数据库系统结构、数据库应用方法等知识外,通过实验对相关技术加深认识,切实加强学生的实践能力,是教学中一个重要且必要的环节。

并为其它信息系统专业课程奠定基础。

《SQLserver2000》是一门实践性很强的课程,只有通过上机实践才能真正领会主教材中介绍的知识。

二、应达到的实验能力标准

本实验的教学目标是使学生掌握如何使用SQLserver2000数据库开发系统,了解数据库设计及相关操作的基本概念与方法,进而学会建立与组织、操作数据库。

上机实验的主要目标如下:

(1)通过上机操作,加深对数据库系统理论知识的理解。

(2)通过使用具体的DBMS,了解一种实际的数据库管理系统并掌握其操作技术。

(3)通过上机实验,提高动手能力,提高分析问题和解决问题的能力。

三、实验主要内容

试验一SQLserver2000的安装及SQLserver2000常用工具的使用

(学时4)

要求:

掌握SQLserver2000的安装方法

掌握SQLserver2000常用工具的使用方法

试验二数据库及表的创建和管理

(学时4)

要求:

掌握SQLserver2000数据库的创建及使用方法

掌握SQLserver2000数据库的创建使用方法

试验三约束的创建及使用

(学时2)

要求:

能用T—SQL语言及企业管理器创建约束

试验四表中数据的查询及维护

(学时4)

要求:

掌握表中数据的查询方法及操作方法

试验五Transact—SQL程序设计

(学时2)

要求:

掌握Transact—SQL程序设计的方法

要求:

掌握用户自定义函数的创建方法

试验六SQLServer视图及索引的创建及使用

(学时4)

要求:

掌握视图的创建及调用

掌握索引的创建及调用

试验七SQLServer的存储过程

(学时4)

要求:

掌握存储过程的创建及调用

试验八SQLServer的触发器

(学时4)

要求:

学会触发器的创建及使用

试验九SQLServer的安全性管理及代理服务

(学时4)

要求:

通过实验理解SQLServer的安全性管理及代理服务

试验十数据库的备份及恢复

(学时2)

要求:

学会如何备份及恢复数据库

实验十一SQLServer数据转换

(学时4)

要求:

掌握数据的导入\导出及DTS设计器的使用

四、实验成绩考核方法

实验成绩在课程总成绩中占20%,每次实验以百分记分,独立完成实验内容达到实验目的为100分,完成实验内容但对实验内容理解不清为60分,其他情况酌情定分。

最后计算平均分并乘以0.2加入总分中。

五、实验教材、参考资料

1.《SQLServer学习与上机实验指导》李春葆等清华大学出版社

2.《SQLSERVER数据库设计与应用案例训练教程》魏茂林等电子工业出版社

3.《SQLServer数据库应用系统开发技术实验指导及习题解答》朱如龙等编著机械工业出版社

六、实验项目汇总表

序号

内容

实验学时

实验一

SQLserver2000的安装及SQLserver2000常用工具的使用

4

实验二

数据库及表的创建和管理

4

实验三

约束的创建及使用

2

实验四

表中数据的查询及维护

4

实验五

Transact—SQL程序设计

2

实验六

SQLServer视图及索引的创建及使用

4

实验七

SQLServer的存储过程

4

实验八

SQLServer的触发器

4

实验九

SQLServer的安全性管理及代理服务

4

实验十

数据库的备份及恢复

2

实验十一

SQLServer数据转换

4

实验附录:

上机实验一

1.练习安装SQLSERVER2000及卸载SQLSERVER2000。

2.管理器创建一个新的SQLServer服务器组,作为MicrosoftSQLServers的子对象,名称为“NewGroup”

3.在计算机上再安装一个SQLServer命名实例,实例名为“people”。

使用企业管理器在NewGroup服务器组下创建一个新的SQLServer注册,使她连接people实例。

上机实验二

1.使用企业管理器创建名为student的数据库,并设置数据库主文件名为syudent_data,大小为10MB;日志文件为student_log,大小为2MB.其他参数取默认值。

步骤:

a.

b.

c.

d.

2.使用Transact—SQL语言创建一个student1数据库,主文件逻辑名为student1_data,物理文件名为student1.mdf,为10MB,增长速度为10%;数据库的日志文件逻辑名为syudent1_log,物理文件名为student1.ldf,初始化大小为1MB,最大尺寸为5MB,增长速度为1MB;文件存放路径为c:

\data文件夹下。

Createdatabasestudent1

Onprimry

(name=student1_data,

filename=c:

\data\student1.mdf,

size=10,

maxsize=unlimited,

filegrowth=10%)

logon

(name=student1_log,

filename=c:

\data\student1.ldf,

size=1,

maxsize=5,

filegrowth=1)

3.在student数据库中创建一个名为pupil的表,要求:

(snochar(6)notnull,snamechar(10)notnull,ssexchar

(2)notnull,birthdaydatetimenotnull,politychar(20))

步骤:

a.

b.

c.

保存并命名为pupil即可。

上机实验三

1.将pupil表的sno设置为主键。

2.为sname字段设置惟一性约束。

步骤:

3.为ssex和birthday设置检查性约束,要求ssex只能为‘男’或‘女’,birthday应该大于‘1987-1-1’。

步骤:

4.

为polity字段设置默认约束,值为‘群众’。

5.再创建一个学生选课表sc(snochar(6)notnull,cnochar(10)notnull,gradereal).

为sc表创建外键约束,把sc表的sno和pupil表的sno关联起来,在这两个表之间创建一种制约关系。

步骤:

最后保存该关系图即可。

上机实验四

1.已知一个名为pupil的表:

(snochar(6)notnull,snamechar(10)notnull,ssexchar

(2)notnull,birthdaydatetimenotnull,politychar(20),sdeptchar(20)notnull)

a.利用insert语句向其中插入一条新的记录:

(‘0007’,‘张三’,‘男’,‘1982-3-21’,‘团员’,’计算机系’)

insertintopupil

values(‘0007’,‘张三’,‘男’,‘1982-3-21’,‘团员’,‘计算机系’)

b.利用update语句将编号为‘0004’的学生polity改为‘党员’:

updatepupil

setpolity=’党员’

wheresno=’0004’

a.利用delete语句将‘186-1-1’以后出生的女同学记录删除。

Deletefrompupil

Wherepolity>1986-1-1andssex=’女’

2.针对pupil、sc、course三张表完成以下查询:

a.查询所有学生的基本信息,并按出生日期升序排列

select*frompupilorderbypolity

b.查询女同学的信息和女同学的人数

select*frompupilwheressex=’女’

computecount(sno)

c.查询所有男同学的年龄

selectyear(getdate())-year(birthday)as年龄frompupil

d.所有选课学生的姓名、选修课程名及成绩

selectsname,cname,grade

frompupil,sc,course

wherepupil.sno=sc.snoando=o

e.不及格学生的姓名

selectdistinctsname

frompupil,sc,course

wherepupil.sno=sc.snoando=oandgrade<60

f.查询‘刘’姓学生的信息

select*frompupilwheresnamelike‘刘%’

g.查询polity为’团员’或’党员’的学生信息

select*frompupilwherepolityin(‘团员’,’党员’)

h.查询各门课程的选课人数

selectcno,count(sno)fromscgroupbycno

i.查询缺少成绩的学生的学号及课程号

selectsno,cnofromscwheregradeisnull

j.查询与‘刘成’同一个系的学生情况

select*frompupilwheresdeptin(selectsdeptfrompupilwheresname=’刘成’))

k.查询选修了课程名为‘MIS’的学生的学号和姓名

selectsno,snamefrompupilwheresnoin(selectsnofromscwherecnoin(selectcnofromcoursewnerecname=’MIS’))

上机实验五

1.编写一个用户自定义函数fun_avggrade,要求根据输入的班级号和课程号,求此班级此课程的平均分。

Createfunctionfun_avggrade

(@classnumberaschar(10),@coursenumberaschar(10))

returnsreal

begin

declare@avgresult

select@avgresult=avg(grade)

fromsc

wheresubstring(sno,1,len(sno)-2)=@classnumberandcno=@coursenumber

return@avgresult

end

2.编写一个用户自定义函数,完成以下功能:

根据两个

输入参数(成绩上限和成绩下限),求sc数据表中满足输

入条件的学生人数。

Createfunctionfun_sumren

(@maxlinereal,@minlinereal)

returnsint

begin

declare@personcountasint

select@personcount=(selectcount(distinctsno)fromsc)

fromsc

wheregrade<=@maxlinerealandgrade>=@minline

return@personcount

end

上机实验六

1.如何通过企业管理器和Transact_SQL语句对视图进行创建、修改和删除?

通过企业管理器:

创建步骤:

最后保存该视图即可。

修改步骤:

进入该界面重新修改该视图即可。

删除步骤:

通过Transact_SQL语句:

创建:

createview视图名

[withencryption]

asselect_statement

[withcheckoption]

修改:

利用alterview视图名

删除:

利用dropview视图名

2.

通过Transact_SQL语句创建一个视图,计算各个班级的各门课程的平均分。

Createviewv_avggrade

As

Selectsubstring(pupil.sno,1,len(pupil.sno)-2)as班级,

Cnameas课程名称,

Avg(grade)as平均分

Frompupil,sc,grade

Wherepupil.sno=sc.snoando=o

Groupbysubstring(pupil.sno,1,len(pupil.sno)-2),Cname

3.通过Transact_SQL语句创建一个视图,显示‘高等数学’未过的学生的信息。

Createviewv_gradenotpass

As

Selectpupil.sno,sname,cname,grade

Frompupil,sc,course

Wherepupil.sno=sc.snoando=oandgrade<60

Andcname=’高等数学’

4.

通过Transact_SQL语句创建一个视图,查询的数据为99521班学生的考试成绩。

Createviewv_grade99521

As

Selectpupil.sno,sname,cname,grade

Frompupil,sc,course

Wherepupil.sno=sc.snoando=oand

left(pupil.sno,5)=’99521’

5.如何通过企业管理器创建索引?

步骤:

点击‘新建’按钮

点击‘确定’

点击‘关闭’

6.

如何删除索引?

选中该索引点击‘删除’即可

利用dropindex表名.索引名完成删除

上机实验七

1.创建一个存储过程stugradeinfo,查询班级、学号、姓名、性别、课程名称、分数

createprocedurestugradeinfo

as

select班级=substring(pupil.sno,1,len(pupil.sno)-2),

pupil.snoas学号,

snameas姓名,

ssexas性别,

cnameas课程名称,

gradeas分数

frompupil,sc,course

wherepupil.sno=sc.snoando=o

2.利用企业管理器创建一个存储过程stu_info,根据传入的编号,查询某学生的基本信息。

代码如下:

createprocedurestu_info

@stunumchar(10)

as

ifnotexists(select*frompupilwheresno=@stunum)

print‘查无此人!

else

begin

selectsnoas编号,

snameas姓名,

ssexas性别,

birthdayas出生日期,

polityas政治面貌

frompupil

wheresno=@stunum

end

3.创建一个存储过程stu_age,根据输入的学生姓名,计算该学生的年龄。

Createprocedurestu_age

@stunamechar(10)

as

ifnotexists(select*frompupilwheresname=@stuname)

print‘查无此人!

else

begin

declare@ageint

select@age=floor(datediff(day,birthday,getdate())/365)

frompupil

wheresname=@stuname

end

4.

创建一个存储过程stu_grade,根据输入的学生编号,返回其选课及其成绩。

Createprocedurestu_grade

@stunumchar(10)

ifnotexists(select*frompupilwheresname=@stuname)

print‘查无此人!

else

begin

ifnotexists(select*frompupil,scwherepupil.sno=sc.sno)

print‘无此学生的选课信息!

else

selectsname,cname,grade

frompupil,course,sc

wherepupil.sno=sc.snoandcourse=cno=o

end

上机实验八

1.创建一个insert触发器,当在pupil表中插入一条新记录时,给出‘你已经插入了一条新记录!

’的提示信息。

步骤:

程序代码如下:

createtriggerstuinsertonpupil

forinsert

as

declare@msgchar(50)

set@msg=’你已经插入了一条新记录!

print@msg

2.创建一个insert触发器,当在pupil表中插入一条新记录时,不允许在学号中出现重复的编号或出现空值。

程序代码如下:

createtriggerstuinsert1onpupil

forinsert

as

declare@stunumchar(10)

set@stunum=(selectsnofrominserted)

if@stunumisnull

begin

print‘学号不能为空!

rollbacktransaction

end

else

begin

declare@numint

set@num=(selectcount(*)frompupilwheresnoin(selectsnofrominserted))

if@num>1

begin

print‘已经有相同的学号,请重新确认!

rollbacktransaction

end

else

print‘数据录入成功!

end

3.创建一个insert触发器,当在sc表中插入一条新记录时,sno和cno必须是已经存在的学号和课程号,且grade应该在0----100之间。

程序代码如下:

createtriggerscinsertonsc

forinsert

as

declare@gradevaluereal

set@gradevalue=(selectgradefrominserted)

print‘触发器开始工作………………’

ifnotexists(selectsnofrominserted

wheresnoin(selectsnofrompupil))

begin

print‘无此学生的编号,请重新确认!

rollbacktransaction

end

else

begin

ifnotexists(selectcnofrominsertedwherecnoin(selectcnofromcourse))

begin

print‘无此课程的编号,请重新确认!

rollbacktransaction

end

else

begin

if@gradevalue<0or@gradevalue>100

begin

print‘分数有误,请重新确认!

rollbacktransaction

end

else

print‘数据插入成功!

end

end

4.创建一个after触发器,在pupil表中删除某学生的记录时,删除其相应的选课记录。

程序代码如下:

createtriggerstudeleteonpupil

fordelete

as

declare@stunumchar(10)

select@stunum=snofromdeleted

ifnotexists(select*frompupil,sc

wherepupil.sno=sc.snoandpupil.sno=@stunum)

print‘无此学生的选课记录!

else

begin

print‘开始查找并删除该学生相映的选课记录……..‘

deletefromscwheresno=@stunum

print‘该学生的选课记录已经删除!

end

5.创建一个insteadof触发器,当在course表中上出记录时,不允许删除course表中的数据。

程序代码如下:

createtriggernotallowdelete

oncourse

insteadofdelete

as

print‘insteadof触发器开始工作……………’

print‘course表中的数据不允许删除!

不能执行删除操作!

上机实验九

1.使用企业管理器和Transact_SQL语句管理登录帐户

2.使用企业管理器和Transact_SQL语句管理数据库用户

3.使用企业管理器和Transact_SQL语句管理服务器角色和数据库角色

4.使用企业管理器和Transact_SQL语句管理语句权限和对象权限

5.练习创建一个作业。

6.练习创建一个警报。

上机实验十

1.创建一个备份设备。

2.

使用企业管理器对一数据库做一次完全数据备份。

3.

使用企业管理器恢复某一数据库的完全数据备份

上机实验十一

1.导入一个文本文件到SQLServer数据库当中。

 

2.将SQLServer数据库当中的表导出到access数据库当中。

3.

利用DTS设计器将表从

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

当前位置:首页 > 初中教育 > 语文

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

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