SQLserver学习day06T-SQL程序

    xiaoxiao2021-12-14  18

    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
    转载请注明原文地址: https://ju.6miu.com/read-962431.html

    最新回复(0)