T-SQL中的变量分为局部变量和全局变量
为什么要用局部变量:
在SQL 中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个 SQL 语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量 。当然 MS SQL Server的全局变量也很有用。
局部变量 :局部变量就是在当前批处理中有效的变量,批处理完成就删掉
全局变量 :在整个SQL Server 中都可以访问到的变量
语法:
declare @variable_name DataType
--声明 变量名称 数据类型( 变量不能是 text 、 ntext 或 image 数据类型,MS说的).
局部变量的赋值:
语法:
set @variable_name =value
或
select @variable_name=value
set赋值语句一般用于赋给变量指定的数据常量
select 语句需要确保筛选的记录不多于一条,如果查询的记录多于一条,将把最后一条记录的值赋给变量
set与select语句在对变量进行赋值时的区别
SET | SELECT | |
同时对多个变量赋值 | 不支持 | 支持 |
表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
表达式未返回值时 | 变量被赋NULL值 | 变量保持原值 |
全局变量 是系统预定义的,返回一些系统信息,全局变量以两个at(@) 开头。
常见的:
@@error 最后一个T-SQL错误的错误号
@@identity 最后一次插入的标识值
@@language 当前使用的语言的名称
@@max_connections 可以创建的同时连接的最大数目
@@rowcount 受上一个SQL语句影响的行数
@@servername 本地服务器的名称
@@servicename该计算机上的SQL服务的名称
@@timeticks当前计算机上的每刻度的微妙数
@@transcount当前连接打开的事物数
@@version 返回当前sql server的版本信息
......
输出语句print 和select
语法
print 局部变量或字符串
select 局部变量 as 自定义列名
数据类型转换 cast() 和convert()函数
与C#类似,t-sql语言中,数据类型转换也分为隐式转换和显示转换。
convert()和cast()都能实现数据类型的显示转换
语法
cast(表达式 as 数据类型)
convert(数据类型[(长度)],长度[,样式])
相关例子:
SQLserver中用convert函数转换日期格式
2008-01-23 15:47
SQLserver中用convert函数转换日期格式2008-01-15 15:51SQLserver中用convert函数转换日期格式
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
整理了一下SQL Server里面可能经常会用到的日期格式转换方法:
举例如下:
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
更多信息详见联机丛书,msdn
begin-end 语句
作用:在顺序结构的程序中,将多个语句定义为一个语句块,把每个语句块视为一个单元处理,类似C# 中"{}"的 作用
语法
begin
语句或语句块
end
if-else 条件语句
作用:属于分支结构,类似C#,同样是根据条件是否成立来确定程序的执行方向。
语法
if(条件)
语句或语句块1
else
语句或语句块2
while 循环语句
作用:可根据条件重复执行一条语句或一个语句块
在循环中,可通过continue 和break来控制语句的执行
语法
while(条件)
begin
语句或语句块
[break|continue]
end
case 多分支语句
作用:计算一组条件表达式,并返回其中一个符合条件的结果
语法
case
when 条件1 then 结果1
when 条件2 then 结果2
[else 其他结果]
end
case语句表示如果"条件1"成立,就执行“结果2”
如果省略else 并且when的条件表达式的结果都不为true,则case-end语句返回null
批处理
go 指令
go指令是批处理的标志。
批处理是一条或多条sql语句的集合,sql server将批处理指令编译成一个可执行单元,此单元称为执行计划。
每个批处理可以编译成单个执行计划,从而提高执行效率。
定义: 以一条命令的方式处理一组命令的过程称为批处理
了解: 百度的定义:批处理 (Batch),也称为 批处理 脚本。 批处理 就是对某对象进行批量的处理。 目前比较常见 的批处理 包含两类:DOS 批处理 和PS 批处理
呼~~纯手工打,写下来作为复习。