SQLserver学习day06 T-SQL程序

来源:互联网 发布:自由职业贷款软件 编辑:程序博客网 时间:2024/05/21 18:33

T-SQL程序

变量

声明变量:
DECLARE @变量名 数据类型

变量赋值:两种方式:
SET赋值 :一般是常量

DECLARE @name varchar(10)SET @name='zhangsan'PRINT @name--打印语句--结果是 zhangsan

SELECT赋值: 从表中查询值赋给变量

--查询赵六的密码赋值给变量pwdDECLARE @pwd varchar(10)SELECT pwd=UserPwd FROM UserInfo WHERE UserName='赵六'PRINT @pwd

SET赋值和SELECT赋值的区别

(1)SET不能同时为多个变量赋值,SELECT可以。

(2)当表达式返回多个值时,不能用SET赋值,比如返回用户表中的所有用户地址,然后赋给变量,这是不成立的。
而用SELECT 赋值时,此时变量的值是返回的列中的最后一个值。

(3)当表达式返回的值是空值时,SET 为变量赋值的结果是NULL,SELECT为变量赋值的结果是变量之前的值不变。

全局变量

①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

具体的全局变量可以查阅帮助文档使用。

数据类型转换

隐式转换:当类型相兼容会发生自动转换。

显式转换:可以使用CONVERT函数和CAST函数进行转换。

CAST 函数 :CAST(转换的表达式 AS 数据类型)

DECLARE @name varchar(10),@age intSET @name='LISA'SET @age=18PRINT @name+CAST(@age AS varchar(10))--不转换的话会报错,将INT 类型转换成 varcharGO

这里写图片描述

CONVERT 函数:CONVERT (数据类型,转换的表达式,[格式])

两者转换没有什么区别,在转换日期的时候CONVERT更有优势,因为可以指定格式。

--对日期进行转换PRINT CAST(GETDATE() AS varchar(10))PRINT CONVERT(varchar(10),GETDATE(),111)PRINT CONVERT(varchar(10),GETDATE(),105)

这里写图片描述

流程控制语句

用来控制程序执行流程的语句。

顺序结构:BEGIN…END
分支结构:IF…ELSE 或 CASE….END
循环结构:WHILE

IF…ELSE学习

--当变量a大于b时,就交换,否则让a=100,b=200DECLARE @a int,@b int,@t intSET @a=10SET @b=5IF(@a>@b)    BEGIN         SET @t=@a        SET @a=@b        SET @b=@t    ENDELSE    BEGIN        SET @a=100        SET @b=200    ENDPRINT @aPRINT @b

这里写图片描述

CASE..END 学习

--成绩分级,大于90为A,>80&&<90为B,>70%%<80为C,>60&&<70为D,不及格为EDECLARE @score FLOATSET @score=RAND()*100--随机数生成成绩SELECT CASE     WHEN @score>90 THEN 'A'    WHEN @score>80 AND @score<90 THEN 'B'    WHEN @score>70 AND @score<80 THEN 'C'    WHEN @score>60 AND @score<70 THEN 'D'    ELSE 'E'END

WHILE学习

--计算1-100的累加和DECLARE @x int,@sum intSET @x=1SET @sum=0WHILE(@x<=100)BEGIN    SET @sum=@x+@sum    SET @x=@x+1ENDPRINT @sum

这里写图片描述

CONTINUE : 让程序跳过CONTINUE关键字以后的语句,并且回到while循环的开始,相当于跳过一次循环。

BREAK:让程序完全跳出循环,结束WHILE 语句。

RETURN:结束整个程序。

打印九九乘法表

--利用双层循环打印九九乘法表DECLARE @i int,@j int,@str varchar(100)SELECT @i=1,@j=1,@str=''WHILE(@i<=9)BEGIN    SET @j=@i    WHILE(@j<=@i)    BEGIN        SET @str=@str+CAST(@i AS VARCHAR(2))+'*'+CAST(@j AS VARCHAR(2))+'='+CAST(@i*@J AS VARCHAR(2))+'  '        PRINT @str        SET @j=@j+1    END    SET @i=@i+1END
1 0
原创粉丝点击