实训七 TransactSQL程序设计.docx

上传人:b****2 文档编号:12924427 上传时间:2023-04-22 格式:DOCX 页数:16 大小:119.91KB
下载 相关 举报
实训七 TransactSQL程序设计.docx_第1页
第1页 / 共16页
实训七 TransactSQL程序设计.docx_第2页
第2页 / 共16页
实训七 TransactSQL程序设计.docx_第3页
第3页 / 共16页
实训七 TransactSQL程序设计.docx_第4页
第4页 / 共16页
实训七 TransactSQL程序设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实训七 TransactSQL程序设计.docx

《实训七 TransactSQL程序设计.docx》由会员分享,可在线阅读,更多相关《实训七 TransactSQL程序设计.docx(16页珍藏版)》请在冰豆网上搜索。

实训七 TransactSQL程序设计.docx

实训七TransactSQL程序设计

网络数据库实训报告

日期:

2010年10月22日班级:

09级计算机信息管理

学号

姓名

指导老师

实训地点

成绩

38

庄维瀚

罗小平

教A505

实训项目名称

实训七Transact-SQL程序设计

一、实训目的和要求

1、掌握Transact-SQL中全局变量和局部变量的使用方法;

2、掌握Transact-SQL函数的使用方法;

3、掌握自定义函数的方法;

4、初步掌握Transact-SQL流程控制语句的使用。

二、实训所需仪器、设备

硬件:

计算机

软件:

操作系统WindowsXP、SQLServer2005

三、实训内容

(一)变量的使用

1、全局变量的使用

(1)显示到当前日期和时间为止试图登录SQLServer的次数。

(2)显示SQLServer安装的日期、版本和处理器类型。

2、局部变量的使用

(1)编程实现将student数据库中t_student表的记录个数存入到局部变量,并通过局部变量显示出来。

(2)编程实现将student数据库中t_score表中的分数的最大值和最小值分别存入到两个局部变量,并通过局部变量显示出来。

(二)函数的使用

1、系统函数的使用

(1)显示服务器端计算机的名称

selecthost_name()as‘服务器端计算机名称’

(2)显示用户的数据库用户名

selectuser_name()as‘数据库用户名’

2、字符串函数的使用

(1)显示字符’A’的ASCII码。

(2)显示ASCII码为68的字符。

(3)利用substring、right和len函数,显示t_student表中班级、班内学号、姓名字段的内容。

(参考教材P119例6-23)

3、日期型函数的使用

(1)利用getdate和year函数显示t_student表中的学号、姓名、年龄字段的内容。

(参考教材P121例6-25)

(2)利用month或datepart函数显示t_student表中学号、姓名和出生月份(参考教材P122例6-26)。

(3)显示今天距2003年1月21日相隔的天数。

提示:

selectdatediff(’dd’,'2003-1-21',getdate())AS‘相隔天数’

4、转换函数的使用

(1)利用convert函数查询t_student表中出生年份为1985年的学生信息。

(2)按yy.mm.dd格式显示t_student表中的出生日期。

(3)按dd/mm/yy格式显示t_student表中的出生日期。

(4)按hh:

mi:

ss的格式显示当前时间。

5、数学函数的使用

(1)利用rand函数随机产生一个0到1之间的小数。

(2)利用rand和floor函数随机产生一个0-99之间的整数。

6、用户自定义函数的使用

(1)编写一个用户自定义函数fun_sumscores,要求根据输入的班级号和课程号,求此班此门课程的总分。

(参考教材P125例6-30)

(2)利用上面用户自定义函数fun_sumscores,求t_score表中各个班级的各门课程的总分。

(参考教材P125例6-31)

(3)编写一个用户自定义函数,完成以下功能:

根据两个输入的参数(成绩的上限和下限),求t_score表中满足输入条件的学生人数。

(4)利用上面的用户自定义函数,求t_score表中成绩在60-90分之间的学生人数。

(三)流程控制语句的使用

1、根据t_score表中的考试成绩,查询B04511班学生课程号为10010218的课程的平均成绩,若平均成绩大于75,显示“成绩较理想”,否则显示“成绩不理想”。

利用if语句编写程序实现以上功能。

(参考教材P126例6-32)

2、根据t_score表中B04511班的考试成绩,并根据考试分数输出考试等级。

当分数大于等于90分,输出“优”;当分数在80-90之间,输出“良”;当分数在70至80之间,输出“中”;当分数在60至70之间,输出“及格”;当分数在60分以下,输出“不及格”。

利用case语句编写程序实现以上功能。

(参考教材P129例6-34,不需要输出课程名称)

四、实训步骤

(内容说明:

1.大致的操作步骤;

2.源代码,要标注题号)

1.大致的操作步骤:

(1)右击【数据库】→【附加】→【添加】→选择student.mdf→【确定】

(2)右击【student数据库】→【新建查询】→【在语句编写窗体输入语句】→【执行】→【查询成功】→【检查查询的信息是否正确】

2.源代码:

(一)变量的使用

1.

(1)SELECTGETDATE()AS'当前登陆日期和时间',

@@CONNECTIONSAS'企图登陆次数'

(2)SELECT@@VERSIONAS'当前的SQLServer信息'

2.

(1)declare@RowsReyurnint

set@RowsReyurn=(selectcount(*)fromt_student)

select@RowsReyurnas'记录个数'

(2)declare@maxscorereal,@minscorereal

select@maxscore=max(score),@minscore=min(score)fromt_score

select@maxscoreas'最大值',@minscoreas'最小值'

(二)函数的使用

1.

(1)selecthost_name()as'服务器端计算机名称'

(2)selectuser_name()as'数据库用户名'

 

2.

(1)selectascii('A')as'字符A的ASCII码'

(2)selectchar('68')as'ASCII码为的字符'

(3)selectsubstring(s_number,1,len(s_number)-2)as'班级',

right(rtrim(s_number),2)as学号,

s_nameas姓名,

sexas性别,

birthdayas出生日期,

polityas政治面貌

fromt_student

 

3.

(1)SELECTS_NUMBERAS学号,

S_NAMEAS姓名,

SEXAS性别,

YEAR(GETDATE())-YEAR(BIRTHDAY)AS年龄

FROMT_STUDENT

(2)SELECTS_NUMBERAS学号,

S_NAMEAS姓名,

SEXAS性别,

DATEPART(MONTH,BIRTHDAY)AS出生月份

FROMT_STUDENT

(3)SELECTDATEDIFF(day,'2003-1-21',getdate())

AS'今天距离2003年1月21日相隔的天数'

4.

(1)SELECTS_NUMBERAS学号,

S_NAMEAS姓名,

SEXAS性别,

BIRTHDAYAS出生日期,

POLITYAS政治面貌

FROMT_STUDENT

WHERECONVERT(char(40),BIRTHDAY,102)LIKE'1985%'

 

(2)selectCONVERT(char(40),BIRTHDAY,102)as出生日期fromt_student

(3)selectCONVERT(char(40),BIRTHDAY,103)as出生日期fromt_student

 

(4)selectCONVERT(char(40),getdate(),108)as当前时间

5.

(1)selectrand(8)as'0到之间的一个小数'

(2)selectfloor(rand(6)*100)as'在至产生一个整数的值'

6.

(1)CREATEFUNCTIONFun_SumScores

(@ClassNameASchar(10),

@CourseNumberASchar(10)

RETURNSreal

BEGIN

DECLARE@SumResultASreal

SELECT@SumResult=sum(score)

FROMt_score

WHERESUBSTRING(s_number,1,LEN(s_number)-2)=@ClassName

ANDc_number=@CourseNumber

GROUPBYSUBSTRING(s_number,1,LEN(s_number)-2)

RETURN@SumResult

END

(2)SELECTDISTINCT

班级名称=SUBSTRING(s_number,1,LEN(s_number)-2),

课程名称=t_course.c_name,

总分=dbo.Fun_SumScores(SUBSTRING(s_number,1,LEN(s_number)-2),

t_score.c_number)

FROMt_score,t_course

WHEREt_score.c_number=t_course.c_number

(3)Createfunctionfun_sumren

(@maxlinereal,@minlinereal)

returnsint

begin

declare@personcountasint

select@personcount=count(*)fromt_score

wherescore<=@maxlineandscore>=@minline

return@personcount

end

(4)selectdbo.fun_sumren(60,90)as'60到分的学生人数'

(三)流程控制语句的使用

1.if(selectavg(score)fromt_scorewhereleft(s_number,6)='B04511'

andc_number='10010218')>75

begin

print'B04511班课程的平均成绩较理想!

'

print''

selectavg(score)as平均成绩

fromt_score

whereleft(s_number,6)='B04511'

andc_number='10010218'

end

else

begin

print'B04511班课程的平均成绩不理想!

'

print''

selectavg(score)as平均成绩

fromt_score

whereleft(s_number,6)='B04511'

andc_number='10010218'

end

2.selects_numberas学号,

考试等级=case

whenscore>=90then'优'

whenscore>=80then'良'

whenscore>=70then'中'

whenscore>=60then'及格'

else

'不及格'

end

fromt_score

whereleft(s_number,6)='B04511'

orderbys_number

五、总结与分析

(内容说明:

1.对此次实训原理的归纳;

2.对此次实训过程中出现问题的分析及解决办法;

3.此次实训的收获或体会等)

1.对此次实训原理的归纳:

此次实训主要是掌握Transact-SQL程序语言的设计,通过学习Transact-SQL程序设计,掌握其语言中的各种变量的定义及使用方法、常用的系统函数及使用方法、常用的运算符及其优先级、流程控制语句的种类及用法。

2.对此次实训过程中出现问题的分析及解决办法:

(1)做题的时面对太多的函数等问题,感觉很陌生与不解,总是要经过询问老师,或者看看课本之后,才能将问题解决。

(2)遇到的问题是在用户自定义函数的那部分比较难,自己都想不通,后经问同学和上网查查才知道了,虽然现在基本解决,但还是有疑问的,自己课后会好好想想的。

3.此次实训的收获或体会:

此次实训在同学和老师的帮助下,学习到了这章的知识,在遇到问题的时,要虚心向别人学习,还有要细心,这次对函数的问题比较陌生,要细心的做、细心的记住和区分。

总之,这次遇到的问题是这么多实训最多的,不过最后解决了问题,很欣慰。

我还有细心的记住这些问题和自己所学到的东西。

三、思考题

1、全局变量和局部变量有什么区别?

答:

局部变量必须以标记@作为前缀,局部变量的使用也是先声明,再赋值

全局变量必须以标记@@作为前缀,全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值

2、说明下列字符串函数的作用:

ltrim()rtrim()lower()upper()replicate()reverse()stuff()

substring()str()len()

答:

ltrim()删除数据前面的空格

rtrim()去掉字符串后面的空格

lower()转换成小写字母

upper()把给定的字符串变成大写字母

replicate()按照给定的次数,重复表达式的值

reverse()求反向表达式

stuff()在char_exper1中,把从位置star开始,长度为length的字符串用char_exper2代替

substring()返回指定表达式的一部分

str()把数值变成字符串返回,length是总长度,decimal是小数点右边的位数

len()字符串的长度

3、说明下列日期和时间函数的作用:

dateadd()datediff()datepart()day()getdate()month()year()

答:

dateadd()以datedeprt指定的方式,返回date加上number之和

datediff()以datedeprt指定的方式,返回date2与date1之差

datepart()返回日期date中datepart指定部分所对应的整数值

day()返回指定日期的天数

getdate()返回当前的日期和时间

month()返回指定日期的月份

year()返回指定日期的年份

4、说明下列数学函数的作用:

sqrt()floor()ceiling()rand()round()

答:

sqrt()返回给定值的平方根

floor()返回小于或者等于给定值的最大整数

ceiling()返回大于或者等于给定值的最小整数

rand()返回0和1之间的一个随机数

round()将给定的数值四舍五入到指定的长度

5、说明convert函数的作用。

答:

convert函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式

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

当前位置:首页 > 考试认证 > 公务员考试

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

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