实验3T-SQL流程控制和函数课程数据库原理及应⽤_ 实验名称 T-SQL流程控制和函数教师审批签字⼀.实验⽬的1.熟练掌握变量的定义、赋值与使⽤。
2.熟练掌握常⽤基本运算符。
3.熟练掌握流程控制语句,尤其是条件语句和循环语句。
4.熟悉并掌握常⽤的系统函数。
5.理解什么是标量函数、内嵌表值函数及多语句表值函数。
6.熟练掌握⾃定义函数的定义和调⽤⽅法。
⼆.实验内容及要求对CPXS数据库,完成如下任务:1.创建⼀名为CustomerName的局部变量,并在SELECT语句中使⽤该变量查找“客户D”购买产品的情况(包括产品名称、单价)。
2.⽤T-SQL语⾔编程输出3~300之间能被7整除的数。
3.查询CP表中各种产品的产品编号、产品名称和价格,对其价格按以下规则进⾏转换:若价格⼩于1000,替换为“廉价产品”;若价格在1000-2000之间,替换为“⼀般产品”;若价格⼤于2000⼩于5000,替换为“昂贵产品”;若价格⼤于5000,替换为“奢侈品”;列标题更改为“评价”。
4.使⽤系统函数,计算今天距“2012-1-1”还剩多少天。
5.根据产品编号,查询该产品的名称;(函数名为udf_GetCPName)6.根据客户编号,统计其在某个时期内所购买的商品名称、数量及⾦额(函数名为udf_GetCPListByCID);对函数udf_GetCPListByCID,查询“客户A”在“2011-10-1”到“2011-10-7”期间交易的销售⽇期、产品名称、销售数量和销售⾦额,并按销售⽇期升序排序。
三.实验过程及结果1.use CPXSGODECLARE @CustomerName char(20);SET @CustomerName='客户D';SELECT b.产品名称,b.价格FROM dbo.客户 a,dbo.产品 b,dbo.销售 cWHERE c.产品编号=b.产品编号and a.客户编号=c.客户编号AND a.客户名称=@CustomerName2.DECLARE @m int,@n intset @m=3set @n=0while @m<300BEGINset @n=@m%7if @n=0 select @m as numset @m=@m+1END3.use CPXSGOSELECT产品编号,产品名称,价格,casewhen价格<1000 then'廉价产品'when价格<2000 then'⼀般产品'when价格<5000 then'昂贵产品'when价格>5000 then'奢侈产品'end AS评价from产品4.SELECT DATEDIFF(DAY,GETDATE(),'2012-1-1')AS'剩余天数'5.USE CPXSGOCREATE FUNCTION udf_GetCPName(@num char(6))returns varchar(30) as begindeclare @pn varchar(30)select @pn=(select产品名称from产品where产品编号=@num)return @pnendselect dbo.udf_GetCPName('S00002')产品名称6.USE CPXSGOCREATE FUNCTION udf_GetCPListByCID(@num char(6))returns @tongji table (销售⽇期datetime,产品名称varchar(30),销售数量int,销售⾦额decimal(18,0))asbegininsert @tongjiselect c.销售⽇期,b.产品名称,c.数量,c.销售额from客户 a,产品 b,销售 cwhere a.客户编号=c.客户编号and b.产品编号=c.产品编号and a.客户编号=@num and c.销售⽇期between'2011-10-1'and '2011-10-7' returnendUSE CPXSGOdeclare @id char(6)select @id=(select客户编号from客户where客户名称='客户A')select*from udf_GetCPListByCID(@id)order by销售⽇期asc四.实验中的问题及⼼得通过这次实验让我深⼊了解到变量的定义、赋值与使⽤、常⽤基本运算符、流程控制语句,尤其是条件语句和循环语句、常⽤的系统函数、内嵌表值函数及多语句表值函数,并且掌握⾃定义函数的定义和调⽤⽅法。