T-SQL编程
打印输出
直接在编辑区输入下面两种输出方式即可
print'world'
select 'hello world'
变量
声明关键字declare
分类:(1)局部变量 (2)全局变量
(1)局部变量 :以@开头,先声明,再赋值,再使用
declare @str varchar(64) --声明
set @str='I like sql' --赋值,也可以这样赋值select @str='I like sql'
print @str --使用
set 和select 赋值的区别:
set适用于赋指定值
select一般用于从表中查询出来的数据赋值给变量,如果查询结果有多条,取最后一条的某个字段的值。
exp:select @a=字段名 from 表名
在赋值过程中,如果是表中查询的数据,如果记录只有一条,使用set和select都可以,但是习惯上使用select
(2)全局变量:以@@开头,由系统定义和维护
常用的全局变量:
--@@ERROR:返回执行的上一个语句的错误号
--@@IDENTITY:返回最后插入的标识值
--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数
--@@ROWCOUNT:返回受上一语句影响的行数
--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称
--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称
--@@TRANCOUNT:返回当前连接的活动事务数
--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒)
go语句作用:
--(1)等待go语句之前的代码执行完成之后才能执行后面的代码
比如同时执行创建和使用数据库的代码:
解决方法:
--(2)批处理结束的一个标志,可以用于设置作用域
没写go默认作用域为上一个go结束
比如变量之间没有写go,则上下都能访问
写了就结束了,然后下面变量就不能直接访问,因为在这个作用域里不存在该变量
double类型转换varchar
流程控制
1选择分支结构 if else
--exp:某用户银行卡号为“6225547854125656”,该用户执行取钱操作,
--取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”
代码:
declare @money money
select @money=CardMoney from BankCard where CardNo='6225547854125656'
if(@money<5000)
begin
print '余额不占'
end
else
begin
update BankCard set CardMoney=CardMoney-5000 where CardNo='6225547854125656'
insert into CardExchange values('6225547854125656',0,5000,GETDATE())
end
2选择分支结构 case
--exp:查询银行卡信息,
--分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态
--将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”
--根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户"
代码:
select b.CardNo '卡号' ,a.AccountCode '身份证',a.RealName '姓名',b.CardMoney '余额',
case --判断等级
when CardMoney>500000 then 'vip用户'
else '普通用户'
end '等级',
case CardState --判断状态
when 1 then '正常'
when 2 then '挂失'
when 3 then '冻结'
when 4 then '注销'
else '异常'
end '状态'
3循环结构(while,循环中的break和CONTINUE,作用与C#一致)
1-循环打印1-10
declare @i int=1
while @i<=10
begin
print @i
set @i=@i+1
end
2-循环打印九九乘法表
--制表符 CHAR(9)
--换行符 CHAR(10)
--回车 CHAR(13)
declare @j int =1
while @j<=9
begin
declare @k int =1
declare @str varchar(64) =''
while @k<=@j
begin
set @str=@str+CAST(@k as varchar(32))+'*'
+CAST(@j as varchar(32))
+'='+CAST(@j*@k as varchar(32))+CHAR(9)
set @k=@k+1
end
print @str
set @j=@j+1
end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构