SQL Server实训报告.docx

上传人:b****5 文档编号:8521435 上传时间:2023-01-31 格式:DOCX 页数:24 大小:1.01MB
下载 相关 举报
SQL Server实训报告.docx_第1页
第1页 / 共24页
SQL Server实训报告.docx_第2页
第2页 / 共24页
SQL Server实训报告.docx_第3页
第3页 / 共24页
SQL Server实训报告.docx_第4页
第4页 / 共24页
SQL Server实训报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

SQL Server实训报告.docx

《SQL Server实训报告.docx》由会员分享,可在线阅读,更多相关《SQL Server实训报告.docx(24页珍藏版)》请在冰豆网上搜索。

SQL Server实训报告.docx

SQLServer实训报告

 

《数据库设计与实现

(SQL)实训》报告

(2011-2012学年第一学期)

系别:

班级:

姓名:

学号:

指导教师:

设计时间:

 

二〇一一年十二月三十日

实训项目:

教学管理系统数据库设计

一、实训目的和要求

1、通过实训掌握本学期所学数据库开发的相关知识;

2、掌握数据库、数据表的创建及修改;

3、掌握基本查询、连接查询、嵌套查询的使用;

4、掌握变量的定义、函数的使用和简单程序设计;

5、掌握索引、视图、存储过程和触发器的创建;

6、掌握数据库的维护及帐户的创建。

二、实训内容

为了有效的管理资源,并方便的完成教学信息检索操作,很多学校都有自己的教学管理系统,本次实训主要完成一个基于实际需求的教学管理系统的设计,主要完成后台数据库部分的内容。

包括学生表、教师表、授课任务表、课程表、选课表的设计与数据输入,外键关系的建立,课程、成绩等信息的查询操作。

四、实训步骤

实训项目一数据库、数据表的创建及修改

■任务一、创建一个名为教学管理的数据库,数据文件存放在“D:

\教学管理”路径下。

它由5MB主要数据文件(教学管理1.mdf和1MB日志文件(教学管理_log.ldf)组成。

并且主要数据文件以2MB增长速度增长,其最大数据文件大小为15MB,事物日志文件以1MB增长速度增长,其最大数据文件大小为10MB。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

createdatabase教学管理

on

(name=教学管理1,

filename='c:

\教学管理1.mdf',

size=5,

maxsize=15,

filegrowth=2)

logon

(name=教学管理_log,

filename='c:

\教学管理_log.ldf',

size=1,

maxsize=10,

filegrowth=1)

■任务二、为教学管理数据库增加一个次要数据文件(教学管理2.ndf),该文件大小为4MB,以10%增长速度增长,最大增长到10MB

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

alterdatabase教学管理

addfile

(name=教学管理,

filename='c:

\教学管理2.ndf',

size=4,

maxsize=10,

filegrowth=10%)

■任务三、将“教学管理”数据库中主要数据文件“教学管理1.mdf”大小扩充为20MB。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

alterdatabase教学管理

modifyfile

(name=教学管理1,

size=20)

■任务五、创建教师表。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

createtable教师

(教师名char(4)notnullPRIMARYKEY,

教师姓名varchar(10),

性别char

(2)default'男',

职称varchar(10),

所在部门varchar(30),

登录密码varchar(30)default'teacher')

实训项目二数据查询的实现

■任务一、对学生表进行学号、姓名、性别、出生日期、专业的查询,结果按姓名字段升序排序。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,姓名,性别,出生日期,专业

from学生表

orderby姓名asc

■任务二、为结果集制定姓名,查询学生表中的学生及姓名列,要求查询结果中姓名列的名称为“学生姓名”。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,姓名as学生姓名

from学生表

■任务三、查询所有学生的学号、姓名、性别和年龄。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,姓名,性别,year(getdate())-year(出生日期)as年龄

from学生表

■任务四、显示学生的专业情况,要求:

不显示重复的专业。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

selectdistinct专业

from学生表

■任务五、显示前3名较年长的学生信息

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

selecttop3学号,姓名,出生日期

from学生表

orderby出生日期

■任务六、查询不是计算机网络技术专业的女同学的信息。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select*

from学生表

where专业<>'计算机网络技术'and性别='女'

■任务七、使用IN关键字查询成绩是88、87、75的同学信息。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select*

from选课表

where成绩IN(88,87,75)

orderby成绩

■任务八、查询所有姓李的老师的信息。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select*

from教师

where教师姓名like'李%'

■任务九、计算选课表中的成绩总分、平均分、最高分、最低分。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

selectSUM(成绩)as总分,AVG(成绩)AS平均分,

MAX(成绩)AS最高分,MIN(成绩)AS最低分

from选课表

■任务十、按学生分组计算选课表中的成绩总分、平均分、最高分、最低分。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,SUM(成绩)as总分,AVG(成绩)AS平均分,

MAX(成绩)AS最高分,MIN(成绩)AS最低分

from选课表

groupby学号

■任务十一、按学生分组,求出学生的总分,要求生成汇总行和明细行。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,成绩

from选课表

orderby学号

computeSUM(成绩)by学号

■任务十二、使用连接查询,查询教师所担任的课程号、课程名和课程性质。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select教师号,授课任务表.课程号,课程名,课程性质

from授课任务表join课程表on(授课任务表.课程号=课程表.课程号)

■任务十三、查询没有选课的学生信息。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,姓名,性别

from学生表

where学号notin(selectdistinct学号from选课表)

■任务十四、查询选课表中低于平均分的学生的学号。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

selectdistinct学号as低于平均分的学生

from选课表

where成绩<(selectavg(成绩)from选课表)

■任务十五、查询08网络1班学生的平均成绩。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,avg(成绩)as平均成绩

from选课表

groupby学号

having学号in(select学号from学生表where班级='08网络1班')

实训项目三数据库、数据表的创建及修改

■任务一、显示数据库服务器名称和数据库同时连接的最大用户数。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

select@@servernameas数据库服务器名称

select@@max_connectionsas数据库同时连接的最大用户数

■任务二、定义两个局部变量@v1,@v2并赋值,然后输出变量的值。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

declare@v1char(12),@v2char(20)

set@v1='Transcat-SQL'

set@v2=@v1+'程序设计'

select@v1as'变量@v1的值',@v2as'变量@v2的值'

■任务三、将教师表中姓名字段和人员职称字段连接在一列显示。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select教师姓名+职称as学院教师

from教师

where职称isnotnull

 

■任务四、用left函数返回课程名左3个字符。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

selectleft(课程名,3)as课程名左三个字符

from课程表

■任务五、使用LTRIM函数和RTRIM函数删除字符串中的空格。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

declare@v1varchar(20),@v2varchar(20)

set@v1='Transcat-SQL'

set@v2='程序设计'

select@v1+@v2as去除空格前

selectRTRIM(@v1)+LTRIM(@v2)as去除空格后

■任务六、使用REPLACE函数将“飞速发展的时代”中的“时代”替换为“信息时代”。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

declare@string1varchar(30)

declare@string2varchar(20)

declare@string3varchar(40)

set@string1='飞速发展的时代'

set@string2='时代'

set@string3='信息时代'

selectreplace(@string1,@string2,@string3)as替代后

■任务七、查询“大学英语”课程上课人数,如果人数多于40则显示分班上课,否则显示单班上课。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

declare@stcountint

select@stcount=count(*)

from选课表join授课任务表on选课表.授课编号=授课任务表.授课编号

join课程表on授课任务表.课程号=课程表.课程号

where课程名='大学英语'

IF@stcount>40

begin

print'选择该课程的人数有'+str(@stcount)+'人'

print'进行分班上课'

end

else

begin

print'选择该课程的人数有'+str(@stcount)+'人'

print'进行分班上课'

end

go

■任务八、使用CASE语句对学生按性别分类。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

select学号,姓名,性别=

case性别

when'男'then'该生是男同学'

when'女'then'该生是女同学'

end

from学生表

实训项目四索引、视图、存储过程、触发器创建

■任务一、对学生表创建一个复合索引,使用姓名字段和出生日期字段。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

createINDEXI_student

on学生表(姓名,出生日期)

with

PAD_INDEX,

FILLFACTOR=40

■任务二、使用SQL语句创建一个视图,命名为V_选课。

要求基表的数据来源为:

学生表、选课表、授课任务表、教师、课程表。

选择的字段为:

学生表中的学生号、姓名和班级,课程表中的课程号和课程名字段,授课任务表中的授课学期字段,教师表中的教师号、教师姓名和所在部门字段。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

createviewview_选课表

as

select学生表.学号,学生表.姓名,学生表.班级,

课程表.课程号,课程表.课程名,选课表.成绩,

授课任务表.授课学期,教师.教师号,教师.教师姓名

from授课任务表innerjoin

教师on授课任务表.教师号=教师.教师号innerjoin

课程表on授课任务表.课程号=课程表.课程号innerjoin

选课表on授课任务表.授课编号=选课表.授课编号innerjoin

学生表on选课表.学号=学生表.学号

■任务三、建立一个用户存储过程,实现在教学管理数据库中查询所有学生的学号、姓名、课程名、学分和成绩的功能,并执行该存储过程。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

IFEXISTS(SELECTNAMEFROMsysobjects

wherename='st_score'andtype='p')

DROPPROCEDUREst_score

GO

createPROCEDUREst_score

as

select学生表.学号,学生表.姓名,课程表.课程名,课程表.学分,选课表.成绩

from学生表join选课表on选课表.学号=学生表.学号

join授课任务表on授课任务表.授课编号=选课表.授课编号

join课程表on授课任务表.课程号=课程表.课程号

go

存储过程st_score创建后,执行该存储过程只需在查询窗口中输入:

executest_score

■任务四、建立一个用户存储过程,实现在教学管理数据库中查询某人指定课程的成绩和学分的功能,并执行该存储过程。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

IFEXISTS(SELECTNAMEFROMsysobjects

wherename='query_stscore'andtype='p')

DROPPROCEDUREquery_stscore5

GO

createPROCEDUREquery_stscore5

@namechar(8),@cnamechar(16)

as

select学生表.学号,学生表.姓名,课程表.课程名,课程表.学分,选课表.成绩

from学生表join选课表on选课表.学号=学生表.学号

join授课任务表on授课任务表.授课编号=选课表.授课编号

join课程表on授课任务表.课程号=课程表.课程号

where学生表.姓名=@nameand课程表.课程名=@cname

go

存储过程query_stscore创建后,执行该存储过程只需在查询窗口中输入:

executequery_stscore‘张珊’,’大学英语’

■任务五、建立一个用户存储过程,用于实现计算指定学生的总分的功能,并执行该存储过程。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

IFEXISTS(SELECTNAMEFROMsysobjects

wherename='query_sum'andtype='p')

DROPPROCEDUREquery_sum

GO

createPROCEDUREquery_sum

@namechar(8),@totalfloatoutput

as

select@total=SUM(选课表.成绩)

from学生表join选课表on选课表.学号=学生表.学号

where学生表.姓名=@name

groupby选课表.学号

go

存储过程query_sum创建后,执行该存储过程只需在查询窗口中输入:

declare@tfloat

executequery_sum‘张珊’,@toutput

select‘张珊’as姓名,@tas查询学生的总分

■任务六、在教学管理数据库中创建一个删除类型的触发器nodelete,当在课程表中删除记录时触发该触发器,显示不允许删除的数据的提示信息。

并验证该触发器的功能。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

go

IFEXISTS(SELECTNAMEFROMsysobjects

wherename='nodelete1'andtype='tr')

DROPPROCEDUREnodelete1

GO

createTRIGGERnodelete1

ON课程表

INSTEADOFDELETE

AS

PRINT'insteadof触发器开始执行'

PRINT'本表中不允许删除数据'

触发器nodelete创建后,验证该触发器只需在查询窗口中输入:

use教学管理

deletefrom课程表where课程号=’08005’

实训项目五数据库维护及其他管理

■任务二、创建一个新登录账户,名称为t_login,密码为123,登录后默认的数据库是教学管理数据库,使用默认语言为us_english。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

sp_addlogin't_login1','123','教学管理','us_english'

■任务三、一非事务方式和事务方式执行SQL程序,实现的功能是将选课表中所有记录的成绩设置为60,然后将选课编号为7的选课记录成绩再加60,分析两者执行结果。

非事务方式:

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

update选课表set成绩=60

update选课表set成绩=成绩+60

where选课编号=7

事务方式:

use教学管理

update选课表set成绩=60

update选课表set成绩=成绩+60

if@@error<>0--如果出现错误则回滚操作

rollbacktran

else--如果没有错误则提交事务

committran

■任务四、通过执行SQL语句来查看数据库中的锁信息。

启动SQLServer2005,单击“新建查询”,在弹出窗口中输入如下语句:

use教学管理

begintran

update选课表set成绩=60

execsp_lock

rollback

五、分析与讨论

1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2、总结数据库开发及维护的过程及注意点。

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

当前位置:首页 > 表格模板 > 书信模板

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

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