sql server数据库加强练习题

一)局部变量
1声明变量 @age和@name

declare @name varchar(20)
declare @age int

2赋值
--(1)方法1 set @age=18
set @name='祁宏霞'
--(2)方法2 select @age=18
select @name='祁宏梅'

3分别使用set和select 为行号变量@rcount赋值
计算score表中english平均成绩,如果〉=60,查询正数前三名,否则找出倒数前三名。
------使用set和select 为变量赋值的区别-----
declare @rcount int
--set @rcount=(select COUNT(*) from Student)--先查询,后赋值
select @rcount=COUNT(*) from Student--即查询有赋值
print @rcount

declare @rcount int
select @rcount=COUNT(*) from Score
declare @sum float
select @sum=SUM(ENGLISH) FROM Score
declare @avg float
set @avg=(@sum/@count)
if @avg>=60
begin
select top 3 * from Score order by english desc
end
else
begin
select top 3 * from Score order by english asc
end

4通过while 计算1---100之间奇数的和。

declare @sum2 int =0
declare @i int =1

while @i<=100
begin
if @i%2<>0
begin
set @sum2=@sum2+@i
end
set @i=@i+1
end
print @sum2

5通过while 计算1---100之间偶数的和

declare @sum2 int =0
declare @i int =1

while @i<=100
begin
if @i%2=0
begin
set @sum2=@sum2+@i
end
set @i=@i+1
end
print @sum2

6使用while实现如果english不及格的人超过半数,则给每个人增加2分,循环加,直到不及格的人数少于一半。

--1,计算总人数
declare @count2 int =(select COUNT(*)from Score)
--2,计算英语不及格人数
declare @loster int=(select COUNT(*)from Score where english<60)

declare @harfcount int=floor(@count2/2)
while @harfcount<@loster
begin
update Score set english=english+2 where english<60
set @loster=(select COUNT(*)from Score where english<60)
end

7使用事务实现--转账问题:从0001账户转1000块到0002账户。

begin try
declare @errorSum int =0
update Bank set balance=balance-900 where Cid='0001'
set @errorSum=@errorSum+@@error
update Bank set balance=balance+900 where Cid='0002'
set @errorSum=@errorSum+@@error
commit
print '提交!!'

end try
begin catch
rollback
print '回滚!'
end catch

8打开"隐式事务":设置为开,删除表中数据,回滚!(默认情况为关,如果打开了则不自动提交,学要手动提交)

set implicit_Transactions on
delete from Bank
rollback
select * from Bank

9关闭“隐式事务”。
--如果隐式事务打开,然后删除某个表,在事务没有结束前,其它查询不能访问该表。

set implicit_Transactions off


10使用系统存储过程
给数据'Test'重命名为:'Test123'
查询当前数据库中有多少个表
查询当前数据库中student表中的列信息

-给数据库重命名:
exec sp_renamedb 'Test','Test123'
--查询当前数据库中有多少个表
exec sp_tables
--查询当前数据库中的列信息
exec sp_columns 'Student'

11自定义存储过程 “usp_Helloworld”并使用。实现输出hello world!

create proc usp_Helloworld
as
begin
print 'hello world!'
end

exec usp_Helloworld


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值