T-sql数据编程试验实例一则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T-sql 编程
一、目的和要求
1,进一步巩固前面4章所学内容
2,掌握用户自定义类型的使用
3,掌握变量的分类及其使用
4,掌握各种运算符的使用
5,掌握各种控制语句的使用
6,掌握系统函数和用户自定义函数的使用
二、准备
1,了解t-ql支持的各种基本数据类型
2,了解自定义数据类型使用的一般步骤
3,了解t-sql各种运算符,控制语句的功能和使用方法
4,了解系统函数的调用方法
5,了解用户自定义函数使用的一般步骤
三、内容
1、系统函数的使用:
1)使用rand()函数产生一个0-1的随机数,再产生一个10-99之间的随机数。
select RAND()
select RAND()*89-10
2)使用Square() 函数求7的平方。
select SQUARE(7)
3)使用sqrt()函数求9的平方根。
select sqrt(9)
4)使用ascii函数返回“china”字符串最左边的字符的ascii值。
select ascii(LEFT('china',1))
5)使用left()函数返回“china”左边开始的3个字符。
select LEFT('china',3)
6)使用right( )返回‘abcdefg’右边的4个字符
select right('abcdefg',4)
7)使用substring() 返回‘abcdefg’从第2个字符开始的连续5个字符
select substring('abcdefg',2,5)
8)请用ltrim,rtrim去除字符串(' ad dad dadfad ’)左右两边的空格
select ltrim(rtrim(' ad dad dadfad '))
9)定义两个变量,一个赋值为1,一个为2,请分别用select和print 显示出他们相加的结果。
并说明他们有何区别
declare@a int
declare@b int
set@a=1
set@b=2
select@a+@b
declare@a int
declare@b int
set@a=1
set@b=2
print@a+@b
Select是以结果的方式显示的,而print是以消息的方式显示的
10)说明char类型和varchar类型的区别。
数据类型
char表示的是固定长度;
varchar表示的是实际长度的数据类型
比如:如果是char类型,当你输入字符小于长度时,后补空格;而是varchar类型时,则表示你输入字符的实际长度
2、流程控制语句的使用
1)判断员工编号为“010008”的员工是否存在,如果存在请显示该员工的所有信息,否则,请显示“查无此人”。
if exists(select*from employees where employeeid='010008')
select*from employees where employeeid='010008'
else
select'查无此人'
2)定义一个变量@x,初值为0,请用循环语句使该变量每次加1,直至变量值为6。
declare@x int
set@x=0
while@x<6
begin
set@x=@x+1
end
select@x
3)查出员工编号为‘010008’的员工的工资,假设每年工资加200。
请问这位员工多少年后工资会加到5000?
select income from salary where employeeid='010008'
declare@a int
declare@b int
set@a=1582
set@b=0
while@a<5000
begin
set@a=@a+200
set@b=@b+1
end select@b
4)假设有字符串:‘abcdefghijlklmn’.请把这个字符串倒置显示。
declare@a varchar(15)
deCLARE@b varchar(15)
declare@s int
set@b=''
set@a='abcdefghijlklmn'
set@s=DATALENGTH(@a)
while@s>0
begin
set@b=@b+SUBSTRING(@a,@s,1)
set@s=@s-1
end
select@b
5)假设有字符串:‘aBcDsdfeEFg’。
请把这个字符串转化为大写字符串显示(主意:数字,符号,大写字符及其他字符不用转换)。
1.
select UPPER('aBcDsdfeEFg')
2.
declare@i int
declare@x varchar(12)
set@x=''
set@i=0
while@i<12
begin
if(ASCII(SUBSTRING('aBcDsdfeEFg',@i,1))>=97 and
ASCII(SUBSTRING('aBcDsdfeEFg',@i,1))<=122 )
set@x=@x+char(ASCII(SUBSTRING('aBcDsdfeEFg',@i,1))-32)
else
set@x=@x+SUBSTRING('aBcDsdfeEFg',@i,1)
set@i=@i+1
end
select@x
6)实现1+2+3+4+……+100的T-sql程序。
declare@a int
declare@s int
set@a=0
set@s=0
while@s<=100
begin
set@a=@s+@a
set@s=@s+1
end
select@a
7)实现1*2*3*4*5*6*7也就是7!。
declare@a int
declare@s int
set@a=1
set@s=1
while@s<=7
begin
set@a=@s*@a
set@s=@s+1
end
select@a
8)实现1!+2!+3!+…..+7!的T-sql程序declare@n int
declare@s int
declare@a int
declare@b int
set@n=1
set@b=0
while@n<=7
begin
set@s=1
set@a=@n
while@a>1
begin
set@s=@s*@a
set@a=@a-1
end
set@b=@b+@s
set@n=@n+1
end
select@b
3、自定义函数的使用
1)编写函数f1。
要求能够根据给定的两个int变量求出其中小的那一个值。
2)编写函数f2。
要求能够根据给定的三个int变量求出其中最大的那一个值。
3)编写函数f3。
对于一个给定的员工编号值,查询该值在员工表中是否存在,如存在返回‘该员工存在!’,否则返回‘该员工不存在!’。
并调用该函数,判断员工编号为‘000001’的员工是否存在。
4)编写函数f4:根据员工编号求出该员工的年收入,并调用该函数求出‘000001’员工的年收入。
5)编写函数f5:根据员工编号求出该员工的年收入和年支出,并调用该函数求出‘’员工的年收入和年支出。
6)编写函数f6。
根据部门编号求出该部门的平均收入和平均支出,并调用该函数求出‘5’部门的平均收入和平均支出。
(请先考虑该函数应为哪种函数?)
7)编写函数f7。
先创建一个视图gy_view,该视图包括雇员编号及其所在部门和收入支出信息然后创建一个内嵌表值函数,实现根据雇员编号可通过视图gy_view查询其所在部门和该员工收入、支出。
并调用该函数查询员工编号为‘020018’
四、实验总结(请写出你的困难和建议)
五、思考题
还记得的游标使用步骤吗?请试着用游标把雇员表中所有的信息逐行读取出来。