MSSQL变量与赋值

本文深入探讨SQL中变量的定义与使用技巧,包括不同方法声明变量存储学生数量,计算年龄的最大值、最小值和平均值,以及如何处理NULL值。同时,展示了如何筛选特定年龄段的学生信息,并对比SET与SELECT在变量赋值上的差异。

----定义一个变量 @stuNumber,用来存储学生的数量
--方法01 :使用 Set

Declare @stuNumber int 
Set @stuNumber=(Select Count(*) from LibraryDB.dbo.student)
Select @stuNumber As '学生数量'

go  ---一个批处理的结束和另一个批处理的开始, 在批处理中变量名称不能重复

--方法02 :使用 Select
Declare @stuNumber int 
Select @stuNumber=Count(*) from LibraryDb.dbo.Student
Select @stuNumber As '学生数量'

go
--方法03 
Declare @stuNumber int = (Select Count(*) from LibraryDB.dbo.student)
Print '学生数量:'+ CAST(@stuNumber AS char(5))

---声明多个变量
Declare @num01 int,@num02 int,@num03 int
Select @num01

--任何值和Null运算结果都是Null


--------打印年龄最大值,最小值、平均值 
--Set 

Declare @max int,@min int,@avg int
Set @max =(Select Max(Sage) from LibraryDB.dbo.Student)
Set @min =(Select Min(Sage) from LibraryDB.dbo.Student)
Set @avg =(Select AVG(Sage) from LibraryDB.dbo.Student)

Print '最大值:'+ Cast(@max As char(4)) + char(13) +
      '最小值:'+ Cast(@min As char(4)) + char(13) +
      '平均值:'+ Cast(@avg As char(4)) 
go
--Select 
Declare @max int,@min int,@avg int 
Select @max=max(sage), @min=min(sage),@avg=avg(sage)
from LibraryDB.dbo.Student
Print '最大值:'+ Cast(@max As char(4)) + char(13) +
      '最小值:'+ Cast(@min As char(4)) + char(13) +
      '平均值:'+ Cast(@avg As char(4)) 
go


--------Select 和 Set区别 
Declare @num02 int 
Select @num02 =IsNull(sage,0)  from LibraryDB.dbo.Student Order by SAGE 

Print @num02
Select @num02

go

--打印出年龄介于20-30岁之间的所有学生姓名
Declare @stuName varchar(200) ='',@stuNumber int 
Select @stuName=@stuName+SName+'  ' from LibraryDB.dbo.Student Where Sage Between 20 And 30
Set @stuNumber=(Select count(*) from LibraryDb.dbo.Student Where Sage Between 20 And 30)
Print '年龄介于20-30岁之间的所有学生姓名:'+char(13)+@stuName+char(13)+ '共计:'+CAST(@stuNumber As varchar(3))+'人'
go

----Set /Select 
Declare  @num01 int=100 ,@num02 int = 200
Set @num01=(Select SAge from LibraryDB.dbo.Student Where 1=0)
Select @num02=Sage from LibraryDB.dbo.Student Where 1=0
Select @num01
Select @num02
----如果变量有初始值,如果使用Set赋值,无论赋值的结果时什么,都会把这个结果强行给这个变量;如果用Select进行赋值,只有值不等于null才能完成赋值
go


Declare @Outer int =100
Begin 
    Declare @inner int =200
    Select @outer,@inner
End
Select @outer,@inner
----变量的有效期时通过 go来分割的
go

------Varchar  / char
declare @str01 char(100)
set @str01 = 'Steven'
Set @str01 +='wang'
print @str01


declare @str02 varchar(100)
set @str02 = 'Steven'
Set @str02 +='wang'
print @str02
--varchar支持字符串的拼接,而char不可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值