二、变量

一、信息打印

--print:直接打印消息
--select:在表格中打印消息,可以设置多列,以及每一列的名字

二、变量

T-SQL中变量分为局部变量和全局变量

局部变量:(1)以@作为前缀(2)先声明,在赋值

declare @str varchar(20)
set @str = '我爱数据库编程' --或者select @str = '我爱数据库编程'
print @str

备注:set赋值和select赋值区别:

set:赋给变量指定的值

select:一般用于从表中查询出的数据,查询记录如果有多条,将最后一条记录的值赋给变量,例如:

select @变量名 = 字段名 from 表名

在赋值过程中,如果是表中查询的数据,如果记录只有一条,使用set和select都可以,但是习惯上使用select。

全局变量:(1)以@@作为前缀(2)由系统进行定义和维护,只读

--@@ERROR:返回执行的上一个语句的错误号
--@@IDENTITY:返回最后插入的标识值
--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数
--@@ROWCOUNT:返回受上一语句影响的行数
--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称
--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称
--@@TRANCOUNT:返回当前连接的活动事务数
--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒)

变量示例:

(1)为赵云此人进行开户开卡操作,赵云身份证:420107199904054233

declare @AccountId int
insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
values('420107199904054233','15878547898','赵云',GETDATE())
set @AccountId = @@identity
insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState)
values('6225123412357896',@AccountId,'123456',0,1)

(2)需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138

--方案一:连接查询
select CardNo 卡号, CardMoney 余额 from BankCard 
left join AccountInfo on BankCard.AccountId = AccountInfo.AccountId
where AccountCode = '420107199602034138'
--方案二:使用变量
declare @AccountId int
select @AccountId =  (select AccountId from AccountInfo where AccountCode = '420107199602034138')
select CardNo 卡号, CardMoney 余额 from BankCard where BankCard.AccountId = @AccountId

三、go语句

go语句:

(1)等待go语句前的代码执行完成后,再执行go后面的代码。

(2)批处理语句的结束标志。

--下面的@num变量作用域为全局
--declare @num int
--set @num = 0

--下面的@num变量的作用域是局部,只在两个go之间可以使用,最后一行代码会报错
--.........sql代码
--go
--declare @num int
--set @num = 0
--go
--set @num = 1
posted @ 2022-04-07 14:28  码农阿亮  阅读(77)  评论(0编辑  收藏  举报