西南石油大学实验报告课程名称:数据库原理插入你的照片实验项目名称:实验项目5Transact-SQL编程专业年级班级、姓名、学号:电子邮件地址:实验所用机器名:实验时间地点:2015.12.25实验指导教师:孙瑜成绩批改人批改日期注意:在粘贴截图时请保留窗口完整标题,但只需保留关键界面,多余的空白界面请删除。一、实验课时:2二、实验目的(1)学习如何编写简单的Transact-SQL程序。(2)掌握函数的使用。(3)学习如何执行Transact-SQL程序。(4)掌握简单存储过程的编写方法。(5)掌握简单自定义函数的编写方法。三、实验要求(1)使用SQLServer2008查询分析器。(2)严格依照操作步骤进行。四、实验环境(1)PC机。(2)SQLServer2008。五、实验内容及步骤1.使用局部变量、全局变量(1)定义一个tinyint的整型变量,为其赋值45,并显示变量的值。DECLARE@LENGTHtinyintSET@LENGTH=45PRINT@LENGTH;(2)定义一个长度为20的可变长度型字符变量,为其赋值“WelcometoSWPU”,并显示变量的值。DECLARE@strnchar(20)SET@str='WelcometoSWPU'PRINT@str(3)查询当前数据库服务器名。select@@SERVERNAME(4)查询当前数据库管理系统版本。SELECT@@VERSION;2.函数的使用(1)数学函数的使用分别用函数求出-3的绝对值,16的平方根,5的三次方。DECLARE@iint;SET@i=-3;SELECTABS(@i);GOselectsqrt(16)selectpower(5,3)(2)字符串函数的使用1)分别将字符串“china”、“MACHINE”转换成大写、小写字母;selectupper('china')selectlower('MACHINE')2)去掉字符串“machine”左边的空格,再与“china”及“press“连接起来;select'china'+LTRIM('machine')+'press'3)去掉字符串“machine”右边的空格,再与“china”及“press“连接起来;select'china'+RTRIM('machine')+'press'4)去掉字符串“machine”左右两边的空格,再与“china”及“press“连接起来;select'china'+LTRIM(RTRIM('machine'))+'press'5)将字符串“abcdabcd”中的所有字符“a”换为字符“h”。declare@cvarchar(10)set@c='abcdabcd'printreplace(@c,'a','h')(3)日期、时间函数的使用1)返回系统当前日期并以整数形式返回当前日期的年份、月份、日及季度;selectGETDATE()selectYEAR(getdate())selectMONTH(getdate())selectDAY(GETDATE())SELECTdatepart(quarter,GETDATE())2)返回给定日期“2006-2-21”与当前日期相差的天数。declare@adatetimeset@a='2006-02-21'selectDATEDIFF(DAY,@a,GETDATE())(4)系统函数与元数据函数的使用1)显示正在使用的用户名、数据库名;selectUSER_NAME(),DB_NAME()2)返回当前主机标识及主机名称。selectHOST_ID()as当前主机标识selectHOST_NAME()as当前主机名称3.编写较复杂的Transact-SQL程序(1)在COMPANY数据库中,我们将员工的工资水平分为三类,即工资小于30000为低工资,工资大于等于30000且小于50000为中等工资,工资大于等于50000为高工资。请显示所有员工的姓名及其对应的工资水平。SELECTSsn,'工资水平'=CASEWHEN(Salary30000)THEN'低工资'WHEN(Salary=30000ANDSalary50000)THEN'中等工资'WHEN(Salary=50000)THEN'高工资'ENDFROMEMPLOYEE(2)用Transact-SQL语言编写程序计算1~100之间所有能被7整除的数的总和。declare@sumint,@iintset@sum=0set@i=0while@i=100beginif(@i%7=0)set@sum=@sum+@iset@i=@i+1endprint@sum4.编写简单存储过程(1)在COMPANY数据库中,编写一存储过程:输入参数为部门编号,查询该部门员工的FNAME,LNAME,SSN,SEX和DNAME信息createPROCEDUREdepartem@dnumsmallint,@FNAMEnvarchar(50)OUTPUT,@LNAMEnvarchar(50)OUTPUT,@SSNchar(9)OUTPUT,@SEXchar(2)OUTPUT,@DNAMEnvarchar(50)OUTPUTasbeginselectFname,Lname,Ssn,Sex,dnamefromEMPLOYEEjoinDEPARTMENTonDno=Dnumberwhere@dnum=dnoend(3)调用前面创建的存储过程,查询部门5的员工信息declare@FNAMEnvarchar(50),@LNAMEnvarchar(50),@SSNchar(9),@SEXchar(2),@DNAMEnvarchar(50)execdbo.departem5,@FNAMEOUTPUT,@LNAMEOUTPUT,@SSNOUTPUT,@SEXOUTPUT,@DNAMEOUTPUTselect@FNAME,@LNAME,@SSN,@SEX,@DNAME5.编写简单自定义函数(1)在COMPANY数据库中,编写一自定义函数:自变量为部门编号,返回值为该部门的员工总数createfunctionfn_count(@myinputsmallint)returnssmallintasbegindeclare@zongsmallintselect@zong=COUNT(*)fromEMPLOYEEwhere@myinput=Dnoreturn@zongend(2)调用前面创建的自定义函数,查询所有的部门编号,部门名称以及该部门的员工人数SELECTdistinctDnumber,Dname,dbo.fn_count(dno)as总人数FROMEMPLOYEEjoinDEPARTMENTonDno=Dnumber六、收获,体会及问题(请详细书写,写得越详细、越个性化、越真实越好,否则我不知道你做这个实验的心路历程,也就无法充分地判断你是否是独立完成的这个实验、你是否在做这个实验时进行了认真仔细地思考、通过这个实验你是否在实践能力上得到了提高)通过本次实验,知道了如何编写简单的Transact-SQL程序、函数的使用、学习如何执行Transact-SQL程序、简单存储过程的编写方法、掌握简单自定义函数的编写方法。在学习这些方法的时候可以仿照我们平时一些c语言或者其他编程语言来理解,虽然T-SQL书写方式不同,但是其中的思想是还是相同的。在学习该语言时,要学会如何查文档,更加灵活使用系统自带的函数。