实验目标:
掌握T-SQL语言及程序设计的方法
实验结果:
一、T-SQL程序设计逻辑
1.完成计算1~100之间所有能被3整除的数据的个数和总和后,完成下列问题:
① 求1+2+3+...+100的总和。输出结果如下所示,将相应的T-SQL描述。(注意去除多作的空白格)
② 若求1+2+3+...n的总和,其中n为一局部变量,程序又将做何修改,将相应的T-SQL描述。
③ 求10!参考的结果如下所示,将相应的T-SQL描述。
2.补充完成下面程序,统计随机产生的1000个0~1之间的小数以0.5为分界出现的次数,用以说明随机数的均匀性
3.补充完成下面程序,在以往的练习题找张student表,在该表中查找“李艳”的信息,若找到,则显示该生的学号、姓名、专业,否则显示查无此人。
4.补充完成下面程序,统计随机产生的1000个0~1之间的小数以0.5为分界出现的次数,用以说明随机数的均匀性
declare @r numeric(10,2) --产生的随机数
declare int --随机数个数
declare @n1 int --小于0.5随机数总个数
declare @n2 int --大于0.5随机数总个数
set @m 1 --初始
set @n1 =0
set @n2 =0
while @m <=1000 --产生1000随机数个数
begin
Set @r=rand() --使用rand()函数产生随机数
if( @r<=0.5 )
@[email protected]+1 --统计小于0.5随机数个数
else
@[email protected]+1 --统计大于0.5随机数个数
set @[email protected]+1
end
Print’小于等于0.5的随机数出现了’[email protected]+次 --输出小于0.5的随机数出现了的次数
Print’大于0.5的随机数出现了’[email protected]+次 --输出大于0.5的随机数出现了的次数
5.补充完成下面程序,在以往的练习题找张student表,在该表中查找“李艳”的信息,若找到,则显示该生的学号、姓名、专业,否则显示查无此人。
Declare @sno char(20),@sn varchar(20),@dept varchar(20) --声明三个变量分别表示学号,姓名,专业
Select @sno=学号,@sn=姓名,@dept=系别 --若从student表找到李艳,则赋值给前面声明的三个变量
from
where
if( @sn!=’李艳’ )
Print‘查无此人’ --输出查无此人
else
Select 学号,姓名,系别 from student where 姓名[email protected] --输出该生的学号、姓名、专业
效果:
若无李艳,则如下图所示
二、课后练习
1.准备CPXS数据库包含如下三个表:
① CP(产品编号,产品名称,价格,库存量);
② XSS(客户编号,客户名称,地区,负责人,电话);
③ CPXSB(产品编号,客户编号,销售日期,数量,销售额);
三个表结构如图所示。
执行sql脚本,将相关数据导入,完成以下问题。
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100001', N'彩色电视机 ', 3000, 10)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100002', N'洗衣机 ', 1200, 20)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100003', N'冰箱 ', 1800, 12)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100004', N'电热水器 ', 2000, 30)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100005', N'太阳能热水器 ', 2200, 8)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100006', N'1匹空调 ', 1800, 5)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100007', N'1.5匹空调 ', 3800, 6)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100008', N'彩色电视机 ', 3000, 10)
GO
INSERT [dbo].[cp] ([产品编号], [产品名称], [价格], [库存量]) VALUES (N'100011', N'MP3 ', 900, 10)
GO
INSERT [dbo].[cpxsb] ([产品编号], [客户编号], [销售日期], [数量], [销售额]) VALUES (N'100001', N'000004', CAST(0x672A0B00 AS Date), 5, 8000)
GO
INSERT [dbo].[cpxsb] ([产品编号], [客户编号], [销售日期], [数量], [销售额]) VALUES (N'100002', N'000001', CAST(0x032A0B00 AS Date), 1, 1200)
GO
INSERT [dbo].[cpxsb] ([产品编号], [客户编号], [销售日期], [数量], [销售额]) VALUES (N'100003', N'000005', CAST(0x482A0B00 AS Date), 2, 6000)
GO
INSERT [dbo].[xss] ([客户编号], [客户名称], [地区], [负责人], [电话]) VALUES (N'000001', N'广电公司 ', N'镇江 ', N'张三 ', N'111111112 ')
GO
INSERT [dbo].[xss] ([客户编号], [客户名称], [地区], [负责人], [电话]) VALUES (N'000002', N'家电市场 ', N'无锡 ', N'李四 ', N'222222222 ')
GO
INSERT [dbo].[xss] ([客户编号], [客户名称], [地区], [负责人], [电话]) VALUES (N'000003', N'电器商场 ', N'上海 ', N'王五 ', N'333333333 ')
GO
INSERT [dbo].[xss] ([客户编号], [客户名称], [地区], [负责人], [电话]) VALUES (N'000004', N'小家电商场 ', N'南京 ', N'赵六 ', N'666666666 ')
GO
INSERT [dbo].[xss] ([客户编号], [客户名称], [地区], [负责人], [电话]) VALUES (N'000005', N'广电公司 ', N'南京 ', N'张三 ', N'111111122 ')
GO
ALTER TABLE [dbo].[cpxsb] WITH CHECK ADD CONSTRAINT [FK__cpxsb__产品编号__145C0A3F] FOREIGN KEY([产品编号])
REFERENCES [dbo].[cp] ([产品编号])
GO
ALTER TABLE [dbo].[cpxsb] CHECK CONSTRAINT [FK__cpxsb__产品编号__145C0A3F]
GO
ALTER TABLE [dbo].[cpxsb] WITH CHECK ADD CONSTRAINT [FK__cpxsb__客户编号__15502E78] FOREIGN KEY([客户编号])
REFERENCES [dbo].[xss] ([客户编号])
GO
ALTER TABLE [dbo].[cpxsb] CHECK CONSTRAINT [FK__cpxsb__客户编号__15502E78]
GO
2.创建一名为 Product_name的局部变量,给变量赋值为“冰箱”,查找变量 Product_name对应的“价格”和“库存量”。结果如图所示。
3.创建一个名为Price的局部变量,将产品编号为‘100002’的价格赋值给Price。判断商品的价值是否合理,若商品价格大于3000则输出“价格偏高”,否则输出“价格合理”。最后输出该商品的价格,结果如图所示。
4.编写一段程序判断CP表中价格与平均值的比较,将低于平均值的数据行输出来,结果如图所示。
5.编写一段程序查看有无客户编号为‘000004’的销售记录,若有,则输出“有”,并查询显示该客户销售的产品信息,若无,则输出“无该客户信息”。