T-SQL中的知识点

局部变量

  • 局部变量必须以标记@为前缀,如@age
  • 局部变量的使用也是先声明,再赋值
DECLARE @变量名 数据类型
DECLARE @Name varcher(8)
DECLARE @seat int

赋值

赋值的语法如下:

SET @变量名 =--类似UPDATE 写法和其他赋值语句一样,将等号后的东西赋值给等号前的变量。SELECT @变量名 =

在涉及到任何局部变量的操作中,必须将@字符放到变量名前。

例子:

SET @name = '张三'
SELECT @name = studentName From Student 
WHERE studentNo = '10011';

SET语句只能直接赋值,不能向SELECT语句那样直接将查询结果赋值给变量。
SELECT语句可以直接赋值。

  • SELECT语句可以同时给多个变量赋值,而SET语句一次只能给一个变量赋值。
  • 当表达式返回多个值时,SET语句会报错,而SELECT会将最后一个值赋给变量。
  • 当表达式没有返回值的时候,SET语句会被赋为NULL,SELECT语句会让变量

全局变量

  • 全局变量必须以标记@@为前缀,如@@error
  • 全局变量由系统定义和维护,只能读取,不能修改,且用户无法声明定义

就算自己写@@也不算是全局变量
自己写的@@变量名是也能赋值等操作,但是会被系统认为@ @变量名

例子如下:

declare @@email varchar(10)
set @@email ='abc'
select @@email
--从编译器能看出差别,@@email系统识别为@ @email 从而不是全局变量而是局部变量

这是基础的全局变量:

@@ERROR:最后一个T-SQL错误的错误号
@@IDENTITY :最后一次插入的标识值
@@SERVERNAME:本地服务器的名称
@@VERSION:SQL Server的版本信息

数据类型转化

为提供解决数据类型不兼容的情况出现,数据库提供了一个数据类型转化的环节。有以下这几种方式。

cast方式:

CAST(表达式 AS 数据类型 )

例子如下:

select 'student age is' + 10 --报错
select 'student age is' + CAST(10 as varchar )--查出数据 student age is 10

convert方式:

CONVERT(数据类型,表达式,样式)//数据类型为转换后的数据类型

例子如下:

select 'student age is '+10; --报错
select 'student age is '+ CONVERT(varchar,10,133) --查出数据 student age is 10

但是数据库中的"+"号更着重与计算而不着重与字符串的拼接,如果是这种形式:

select '10'+10 --查询结果为20
select CONVERT(int,10)+10 -- 查询结果为 20,注意int 类型中没有多余的样式,所以样式可以省略。

就是因为"+"更着重于计算,才不会报错而是直接计算结果。

以下例子:

select CONVERT(varchar,RegisterTime) from users --将日期格式转换成字符串格式输出
select CONVERT(varchar,RegisterTime,110) from users --将查出的字符串格式换成110样式
select CONVERT(varchar,RegisterTime,2222) from users --样式值是有范围的而不是随便一个就可以。

说明了样式值是有范围的。而且这个样式主要是针对日期的显示方式。

cast和convert的区别:

cast是没办法选择转换后的样式。
而convert更偏向于日期格式。

分支结构

IF-ELSE 语句

将C#中if-else语句中的大括号换成 BEGIN - END 语句块
· ELSE 是可选部分
· 如果有多条语句,才需要BEGIN-END 语句块。
例子如下:

declare @num int 
--set @num = 60
set @num = 70
if(@num > 60)

begin
--如果只有一个语句,就不用写BEGIN-END 语句块
--和C# 一样,会自动读取紧跟着if语句后的那一条语句
print(@num)
print('OK')
select * from Users where UserStateId < @num
end
else
	print('error')
--else
--print('error')

IF -ELSEIF 语句
例子如下 :

select * from Users
declare @num int 
--set @num = 60
set @num = 70
IF(@num > 60)

BEGIN
		print ('a')
--如果只有一个语句,就不用写BEGIN-END 语句块
--和C# 一样,会自动读取紧跟着if语句后的那一条语句
--print(@num)
--print('OK')
--select * from Users where UserStateId < @num
END
	else if( @num = 60)
BEGIN
		print('b')
END
	ELSE
BEGIN
		print('c')
END

CASE - END 语句

语法如下

CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2

ELSE 其他结果
END

当不满足WHEN的所有条件时,用ELSE
ELSE:表示如过所有WHEN条件均不为TRUE时返回的结果如果省略ELSE且WHEN条件都为FALSE时,CASE语句返回NULL
THEN后不允许编写其他的逻辑操作。
CASE-END语句中,只要满足一个条件,就不会继续运行下面的条件。
THEN后跟的是一个结果,假如跟随的是查询语句,返回的是多个结果的结果集,就会报错。如果跟的查询语句是一个结果,那就可以运行成功。
示例如下:

select * , case 
				when UserRoleId = 1 then 'A'
				when UserRoleId = 2 then 'B'
				when UserRoleId = 3 then 'C'
				else 'D'
			end as 'level'



from Users

循环语句

While 语句

语法:

WHILE (条件)
BEGIN
语句一
语句二

BREAK
END

实例如下:

declare @sum int = 0
declare @i int = 1
while ( @i <=100)
begin
set @sum = @sum +@i
set @i= @i+1

   continue
--return
--break

end
print @sum

批处理指令 GO

批处理:
是包含一个或多个SQL语句的组,从应用程序一次性的发送到SQL Server执行
SQL Server 将批SQL语句编译成一个执行单元,此单元被成为执行计划。
使用批处理文可以提高代码的执行效果,通常会将相关业务的代码房子同一批处理语句中。
GO必须单个一行。
GO 不是一个T-SQL命令,只是被编辑工具识别的命令。
所有语句从脚本开始处或者上一个GO语句开始编译,知道下一个GO语句或者脚本结束,将这段代码编译成一个执行计划。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值