第八章实验.docx
《第八章实验.docx》由会员分享,可在线阅读,更多相关《第八章实验.docx(11页珍藏版)》请在冰豆网上搜索。
第八章实验
云南师范大学信息学院
实验报告
学号:
姓名:
班级:
课程名称:
大型数据库管理系统
实验名称:
Transact-SQL程序结构
实验性质:
①综合性实验②设计性实验③验证性实验
试验时间:
试验地点:
本试验所用的设备:
SQLServer2005、计算机一台
实验目的:
1.掌握变量的分类及使用
2.掌握各种运算符的使用
3.掌握各种控制语句的使用
4.掌握函数的使用
实验内容及过程:
(1)变量的使用。
声明两个字符变量:
@i1和@i2,然后将它们转换为整形变量,对@i1赋初值:
10,@i2的值为:
@i1的值乘以5,再显示@i2的结果。
执行程序显示结果。
代码如下:
declare@i1char(100),@i2char(100)
set@i1='10'
set@i2=cast((cast(@i1asint)*5)aschar(100))
print@i2
go
(2)分支结构的使用。
查询某个部门(销售部)员工参与的项目,如果该部门没有人参与任何项目,就在员工项目表中增加该部门最少一人去参与项目。
否则不在该表中增加该部门人员。
同时在员工表中对参与项目的员工工资增加200,以上增加和修改要求通过显式事务实现,如果成功提交,否则回退。
执行程序显示结果。
代码如下:
USExmgl
GO
declare@error1int,@error2int
begintransaction
ifnotexists
(select*
from员工参与项目表
where员工号in
(select员工号
from员工表
where所在部门号in
(select部门号
from部门表
where部门名='销售部')))
begin
insertinto员工参与项目表values('2010','J4','家电销售')
end
select@error1=@@error
update员工表
set工资=工资+200
where员工号in
(selectdistinct员工号
from员工参与项目表)
select@error2=@@error
if@error1=0and@error2=0
begin
committransaction
end
else
begin
if@error1<>0
print'错误发生在查询语句'
if@error2<>0
print'错误发生在修改语句'
rollbacktransaction
end
select*from员工表
(3)循环结构的使用。
查询员工的基本信息,要求列出员工的职工号,姓名,部门编号,部门,工资,而对工资不是直接显示具体数值,而是进行替换,显示工资级别。
1000到1200的,为一级工资,1200到1500的是二级工资,1500到2000的是三级工资,2000到2700的是四级别工资,2800到3700的是五级别工资,高于3700的为高级。
要求按部门编号循环分批处理显示。
执行程序显示结果。
代码如下:
declare@maxNumchar(4),@minNumchar(4)
select@maxNum=(selectmax(部门号))from部门表
select@minNum=(selectmin(部门号))from部门表
while(cast(@minNumasint)<=cast(@maxNumasint))
begin
select员工号,姓名,所在部门号,部门名,工资=case
when工资>=3700then'高级工资'
when工资>=2800then'五级工资'
when工资>=2000then'四级工资'
when工资>=1500then'三级工资'
when工资>=1200then'二级工资'
when工资>=1000then'一级工资'
end
from员工表,部门表
where员工表.所在部门号=部门表.部门号
and员工表.所在部门号=@minNum
set@minNum=cast((cast(@minNumasint)+1)aschar(4))
end
(4)常用函数的使用。
1.计算从1980年1月1日到当前日期的天数、月数及年数。
代码如下:
declare@startdatetime,@enddatetime
set@start=cast('1980-01-01'asdatetime)
select@end=getdate()
selectdatediff(dd,@start,@end)as'天数',
datediff(mm,@start,@end)as'月数',
datediff(yy,@start,@end)as'年数'
2.计算当前日期加上100天之后的日期。
代码如下:
declare@olddatetime,@newdatetime
select@old=getdate(),
@new=dateadd(dd,100,@old)
select@oldas'当前日期',@newas'100天之后的日期'
3.将日期2009/10/26转换为2009年10月26日的字符串。
代码如下:
declare@datedatetime
set@date=cast('2009-10-26'asdatetime)
selectcast((year(@date))aschar(4))+'年'
+cast((month(@date))aschar
(2))+'月'
+cast((day(@date))aschar
(2))+'日'
4.用函数计算字符串‘Iamateacher.’的长度,并使用函数将“student”替换为“teacher”。
代码如下:
printlen('Iamateacher.')
5.用函数求“Youareastudent”字符串中,从11开始,长度为7的子串。
代码如下:
printsubstring('Youareastudent',11,7)
任课教师评语:
教师签字:
年月日
注:
每学期至少一次设计性实验。
每学期结束请任课教师按时按量统一交到教学秘书处