实验三T-SQL编程
一、实验目的
1、掌握批处理、脚本的概念
2、掌握SQL Server中局部变量、全局变量和内置函数的概念和应用
3、掌握SQL Server流程控制语句的使用
4、掌握SQL Server三种用户自定义函数的创建和使用方法
5、掌握游标的建立和使用
6、掌握事务的建立和使用
二、实验内容
1、恢复sales数据库。
2、使用变量
(1)新建查询。
(2)在编辑窗口输入如下内容:
Use sales
G0
Declare @maxpricee money
Select @maxprice=max(price)from Products
Where price is not null
G0
Select [@maxprice]= @maxprice
Print @@rowcount
(3)解释每一命令的语义,执行以上语句,系统报错,说明错误原因并改正。
错误原因:必须声明标量变量"@maxprice"。改正后的语句:
3、使用函数
(1)新建查询。
(2)在编辑窗口,按要求编写T-SQL语句:
1)编写并记录使用ROUND()函数的示例。
SELECT ROUND(price,1)as unitprice FROM products
2)编写并记录使用SUBSTRING()函数的示例。SELECT substring(name,1,2)FROM products
3)编写并记录使用DATEPART()函数的示例。SELECT DATEPART(yyyy,OrderDate)AS OrderYear, DATEPART(mm,OrderDate)AS OrderMonth, DATEPART(dd,OrderDate)AS OrderDay
FROM Orders
WHERE Orderno=1001
4)编写并记录显示当前系统用户名的语句。
select system_user
4、使用流控制语句
(1)新建查询。
(2)在编辑窗口,输入如下内容:
USEsales
go
select OrderNo,ProductNO,订单等级=
Case QtyOrdered
When 2 then '3级’
When 90 then '1级’
Else '2级’
End
From order_Details
3)修改以上的内容,重新划分等级,要求:
1)当qtyordered的值不低于100时,为1级;
2)当qtyordered的值在区间[50,100)上时,为2级;
3)当qtyordered的值在区间[20,50)上时,为3级;
4)当qtyordered的值在区间[10,20)上时,为4级;
5)当qtyordered的值小于10时,为5级;
(4)记录修改后的T-SQL语句。
5、用户自定义函数的创建和使用
(1)新建查询。
(2)在编辑窗口中,按要求编写T-SQL语言:
1)编写一个计算l到P之间的能被q整除的整数之和的函数,函数名为PQ_SUM。2)编写调用PQ_SUM函数,计算并显示1到100之间的能被3整除的整数之和的语句。(3)记录编写和调用函数的T-SQL语句。
create function PQ_SUM(@p int,@q int)
returns int
as
begin
declare @i int
declare @sum int
set @i=@q set @sum=0
while @i<=@p
begin
if(@i%@q=0)
set @sum=@sum+@i
set @i=@i+1
end
return(@sum)
end
go
--调用
declare @sum int
set @sum=dbo.PQ_SUM(100,3)
print @sum
6、使用事务
(1)新建查询。
(2)在编辑窗口,输入如下内容:
UseSales
go
begin transaction
selectproductid,name,category,pricefromproducts wherecategory =‘A2’update productsset price= price*0.9
where category = ‘A2’
commit transaction
selectproductid,name,category,pricefrom productswherecategory =‘A2’(3)将语句“commit transaction”改写为“rollback transaction”,说明改写前后执行结果有何不同。