`
uule
  • 浏览: 6305962 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

[T-SQL]从变量与数据类型说起

 
阅读更多

 1.变量

学习计算机语言,难免不碰到这个名词,不过咱这里说的是MSSQL(微软SQL Server产品)里的数据库语言实现。

 稍微对程序比较严谨的语言都要求使用之前都要声明变量先,比如c.c++,java,c#之类,T-SQL也没有例外。

 可以试验下:

          SELECT @hello 

会有如下类似错误信息:

      [Err] 42000 - [SQL Server]必须声明标量变量 "@hello"。 

 

声明变量使用如下关键字:DECLARE(不区分大小写的)

 

声明变量需要使用类型,因为“我”要知道你这玩意到底是整数还是日期还是字符串,我该给你分配多少字节空间啊

 

2.数据类型

数据类型就是之前提到的整型,字符之类的类别。

 我们的格式是:

        DECLARE 变量名 类型 

 

我这里约定下,关键字和类型等用大写,变量名小写,你可以不这样子,但希望你遵守“我们学堂”的规范,呵呵。

 先说下,TSQL这孩子变量分好多哇,跟其他语言差不多(其他语言有,局部变量,全局变量之类的,俺可没搞什么大的特殊)

 这里先用局部变量(Local Variant),T-SQL局部变量是@后接变量名字,

         DECLARE @hello VARCHAR(30) 

 

俺可以一次声明多个呢,

      DECLARE @i INT, 

                      @j INT 

 

当然了声明后,俺们的值是个NULL(注意不是'NULL'字符串哦)

SELECT @i 您看看吧

你坑我啊,光个NULL怎么用,别急,我们看看怎么给他们赋值,不会和其他语言一样直接用赋值运算符=吧,对头不过语法稍微区别下

 

3.赋值

     SET @i=123 

这次看看吧SELECT @i

当然SET也可以用SELECT代替。

 稍微来点复杂的:

    --===================== 
    --计算面积@area=@m*@n 
    --===================== 
    DECLARE @m INT, 
            @n INT, 
            @area INT 
    SET @m=12 
    SET @n=5 
    SET @area=@m*@n 
    SELECT @area 
 

赋值也可以是sql执行的结果

DECLARE @count INT 
 SET @count=(SELECT COUNT(*) FROM authors) 
 SELECT @count 
GO 
 

 变量也可以用在sql里,比如下面:

    DECLARE @city CHAR(20) 
    SET @city='Oakland' 
     
    SELECT RTRIM(au_fname) + ' ' + RTRIM(au_lname) AS Name 
    FROM authors 
    WHERE city = @city 
     
    GO 
 

4.流程控制

分支条件这个太常见了,顺序、分支和重复(循环)是结构化程序设计的3个流程,不得不说。

 我们看看T-SQL里的条件语句怎么写,关键字IF不多说了。

 如下:

 DECLARE @i INT
 SET @i=123
 IF @i>0 (SELECT 'positive') 
  

一条语句可以这么干,多条语句块怎么整呢,别着急,BEGIN...END啊,(如果没在一些语言里见过,c类似的里面的{}总该行了吧)

 

    DECLARE @i INT 
    SET @i=123 
    IF @i>0  
        BEGIN 
            SELECT 'positive' 
            SELECT 'not negative' 
        END 
    ELSE 
        SELECT 'OMG' 

 

没错ELSE也支持的。

 也可以嵌套。

 循环LOOP

 使用关键字WHILE

    DECLARE @i INT 
    SET @i=0      
    WHILE @i<10 
        BEGIN 
            SET @i=@i+1 
            PRINT '@i='+CAST(@i AS CHAR) 
        END 

 

while也可以嵌套。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics