SQLserver学习day06 T-SQL程序

T-SQL程序

变量

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

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

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

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

--查询赵六的密码赋值给变量pwd
DECLARE @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 int
SET @name='LISA'
SET @age=18
PRINT @name+CAST(@age AS varchar(10))--不转换的话会报错,将INT 类型转换成 varchar
GO

这里写图片描述

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=200
DECLARE @a int,@b int,@t int
SET @a=10
SET @b=5
IF(@a>@b)
    BEGIN 
        SET @t=@a
        SET @a=@b
        SET @b=@t
    END
ELSE
    BEGIN
        SET @a=100
        SET @b=200
    END
PRINT @a
PRINT @b

这里写图片描述

CASE..END 学习

--成绩分级,大于90为A,>80&&<90为B,>70%%<80为C,>60&&<70为D,不及格为E
DECLARE @score FLOAT
SET @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 int
SET @x=1
SET @sum=0
WHILE(@x<=100)
BEGIN
    SET @sum=@x+@sum
    SET @x=@x+1
END
PRINT @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+1
END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值