SQL SERVER-7-T-SQL编程


T-Sql编程
--T-Sql中的变量都是以@符号开头的。
--以一个@符号,开头,叫做“用户声明的变量”
--以两个@@开头的叫做“全局变量”,“系统变量”

select @@version

select @@language

--为变量赋值
--“全局变量”(系统变量),是系统来维护的,无需我们手动干预,我们只能从中获取值
--不能为系统变量赋值
--set @@language='文言文'
--select @@language

--变量的声明,赋值与使用
--1.自己定义一个变量
declare @userName nvarchar(50)
--为变量赋值(一般情况,推荐使用set来为变量赋值)
set @userName=N'黄林'
--另外一种为变量赋值的方式
select @userName=N'许正龙';
--打印一下
print @userName

--2.声明同时初始化
declare @age int=100;
print @age;

--声明的同时赋值,之后使用
declare @score int =80
select * from TblScore where tEnglish>@score


--变量声明之后如果没有赋值,则结果是null,而且null与任何值的计算结果都是null
--所以说以后声明变量在使用前记得赋值
declare @n int =100
declare @m int
select @m+@n  --null与任何值计算结果都是null


--系统变量
@@error      --最后一个T-sql错误的错误号,如果没有出错则返回0
@@identity   --最后一次插入的标识值(自动增长的编号)
@@language   --当前使用的语言
@@max_connections    --同事访问的最大连接数
@@rowcount   --上一个sql语句影响的行数
@@servername --本地服务器的名称
@@version    --当前sql server的版本号
@@transcount --当前连接打开的事务数

select 1/0
print @@error

declare @n1 int
declare @n2 int
print @n1,@n2   --这里直接打印会报错,这样的书写格式是不正确的
print @@error   --打印最后一次sql执行的结果,错误返回错误信息编号,正确返回0


--if判断,使用bengin... end   代替大括号
declare @age int
set @age=100
if(@age>150)
begin
    print '>150'
end
else if(@age>100)
begin
    print '>100'
end
else
begin
    print '<=100'
end


--while循环的用法
--计算1-100之间所有整数的和
declare @i int,@sum int
set @i=1
set @sum=0  --这里必须赋值,不然null和任何值相加都是null
while @i<=100
begin
    set @sum=@sum+@i
    set @i=@i+1
end
select @sum

--通过set赋值与通过select赋值到的区别
--使用set赋值
declare @n int
set @n=(select sum(tenglish) from TblScore)
print @n

--通过select为@n赋值
declare @n int
select @n=sum(tenglish) from TblScore
print @n
--通过上面发现在聚合函数中使用set和select赋值都是可以的,并没有区别


--但是如果不是使用在聚合函数中,如果子句查询出来的结果是多条记录的时候
--使用set赋值
declare @n int
set @n=(select tEnglish from TblScore) --当该子查询返回的值不只一个的时候,这样写会报错!!!
print @n
--相对来说通过set赋值更严谨一些

--使用select赋值
declare @n int
--当子查询返回不只一个值的时候,select赋值能获取最后一个值,而set赋值则报错。
select @n=tEnglish from TblScore order by TEnglish desc
select @n
--而通过select赋值则更宽松一些
--但是不会报错可能导致返回的结果会是错误的,所以在使用的时候要注意

猜你喜欢

转载自blog.csdn.net/m0_37532448/article/details/82868111
SQL