文档库 最新最全的文档下载
当前位置:文档库 › 实验三 T-SQL编程

实验三 T-SQL编程

实验三 T-SQL编程
实验三 T-SQL编程

实验三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”,说明改写前后执行结果有何不同。

相关文档