阅读本文约需要7分钟
大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了下JAVA高级之反射的相关知识,今天跟大家分享SQL之T-SQL的知识。
参考来源:https://www.cnblogs.com/xiaoxiaogogo/p/3469785.html
下面就T-SQL的几个方面来分别讲解一下。
1、变量
要动态的写sql语句,就不能没有变量。
声明变量并赋值:
declare @i as int;--定义一个 int 类型的 变量 (as可以省略) print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空 set @i=3; print @i;
在sql server 2008之后就可以对变量 在声明的同时进行赋值
declare @a int=3; print @a;
在变量的使用过程中,一定要注意nvarcahr 和nchar的区别。
declare @s nvarchar(20); set @s='Hello'; set @s=@s+' World!'; print @s;--输出的是 Hello World! declare @s2 nchar(20); set @s2='Hello'; set @s2=@s2+' World!'; print @s2;--输出的是 Hello。
为什么使用nchar却是输出的 Hello,因为:nchar是固定长度,即使长度没有达到最大,但是其余长度用 空来代替了,所以 相当于是满的,所以在进行字符串的相加 是不会起作用的。
在查询中赋值:
declare @now datetime; select @now=GETDATE(); print @now; declare @orderNum int; select @orderNum = COUNT(1) from [Sales.Orders];--这条查询语句只是用来 对 变量进行赋值的,不会返回查询结果的. print @orderNum;
主要作用:是将查询结果保存在 变量里,为了下面的使用。
其实也可以使用 set 赋值的方式 实现 上面的作用
set @orderNum =(select COUNT(1) from [Sales.Orders]) print @orderNum
2、批处理
使用“go”,go前面的 所有的 语句处于在一个 批里面。不同批 的变量是不能互相调用。
3、流程控制
1)条件控制
declare @minute int ; set @minute =DATEPART(minute,getdate()); if @minute>20 begin--一条语句可以将 begin end 省略 print '马上睡觉'; end else print '继续快乐玩耍';
2)循环控制