转:SQL Server Transact-SQL 编程

系统 1713 0

SQL Server Transact-SQL 编程

T-SQL语句用于管理SQL Server数据库引擎实例,创建和管理数据库对象,以及查询、插入、修改和删除数据。

Ø 变量

     1、 局部变量(Local Variable)

          局部变量是用户可以自定义的变量,它的作用范围是仅在程序内部,在程序中通常用来储存从表中查询到的数据或当做程序执行过程中的暂存变量。使用局部变量必须以@开头,而且必须用declare命令后才能使用。

 

          基本语法:

          声明变量
        
          
            declare
          
           @变量名 变量类型 [@变量名 变量类型]
        
          为变量赋值
        
          
            set
          
           @变量名 = 变量值;
        
          
            select
          
           @变量名 = 变量值;
        

         

          示例:

          --局部变量
        
          
            declare
          
           @id 
          
            char
          
          (10)--声明一个长度的变量id
        
          
            declare
          
           @age 
          
            int
          
              --声明一个int类型变量age
        
          
            select
          
           @id = 22    --赋值操作
        
          
            set
          
           @age = 55    --赋值操作
        
          
            print
          
          
            convert
          
          (
          
            char
          
          (10), @age) + 
          
            '#'
          
           + @id
        
          
            select
          
           @age, @id
        
          
            go
          
        
           
        
          简单hello world示例
        
          
            declare
          
           @name 
          
            varchar
          
          (20);
        
          
            declare
          
           @
          
            result
          
          
            varchar
          
          (200);
        
          
            set
          
           @name = 
          
            'jack'
          
          ;
        
          
            set
          
           @
          
            result
          
           = @name + 
          
            ' say: hello world!'
          
          ;
        
          
            select
          
           @
          
            result
          
          ;
        
           
        
          查询数据示例
        
          
            declare
          
           @id 
          
            int
          
          , @name 
          
            varchar
          
          (20);
        
          
            set
          
           @id = 1;
        
          
            select
          
           @name = name 
          
            from
          
           student 
          
            where
          
           id = @id;
        
          
            select
          
           @name;
        
           
        
          select赋值
        
          
            declare
          
           @name 
          
            varchar
          
          (20);
        
          
            select
          
           @name = 
          
            'jack'
          
          ;
        
          
            select
          
           * 
          
            from
          
           student 
          
            where
          
           name = @name;
        

          从上面的示例可以看出,局部变量可用于程序中保存临时数据、传递数据。Set赋值一般用于赋值指定的常量个变量。而select多用于查询的结果进行赋值,当然select也可以将常量赋值给变量。

          注意:在使用select进行赋值的时候,如果查询的结果是多条的情况下,会利用最后一条数据进行赋值,前面的赋值结果将会被覆盖。

 

     2、 全局变量(Global Variable)

          全局变量是系统内部使用的变量,其作用范围并不局限于某一程序而是任何程序均可随时调用的。全局变量一般存储一些系统的配置设定值、统计数据。

          全局变量
        
          
            select
          
           @@
          
            identity
          
          ;--最后一次自增的值
        
          
            select
          
          
            identity
          
          (
          
            int
          
          , 1, 1) 
          
            as
          
           id 
          
            into
          
           tab 
          
            from
          
           student;--将studeng表的烈属,以/1自增形式创建一个tab
        
          
            select
          
           * 
          
            from
          
           tab;
        
          
            select
          
           @@
          
            rowcount
          
          ;--影响行数
        
          
            select
          
           @@cursor_rows;--返回连接上打开的游标的当前限定行的数目
        
          
            select
          
           @@error;--T-SQL的错误号
        
          
            select
          
           @@procid;
        
           
        
          --配置函数
        
          
            set
          
           datefirst 7;--设置每周的第一天,表示周日
        
          
            select
          
          
            @@datefirst
          
          
            as
          
          
            '星期的第一天'
          
          , datepart(dw, getDate()) 
          
            AS
          
          
            '今天是星期'
          
          ;
        
          
            select
          
           @@dbts;--返回当前数据库唯一时间戳
        
          
            set
          
          
            language
          
          
            'Italian'
          
          ;
        
          
            select
          
          
            @@langId
          
          
            as
          
          
            'Language ID'
          
          ;--返回语言id
        
          
            select
          
          
            @@language
          
          
            as
          
          
            'Language Name'
          
          ;--返回当前语言名称
        
          
            select
          
           @@lock_timeout;--返回当前会话的当前锁定超时设置(毫秒)
        
          
            select
          
           @@max_connections;--返回SQL Server 实例允许同时进行的最大用户连接数
        
          
            select
          
          
            @@MAX_PRECISION
          
          
            AS
          
          
            'Max Precision'
          
          ;--返回decimal 和numeric 数据类型所用的精度级别
        
          
            select
          
           @@SERVERNAME;--
          
            SQL
          
           Server 的本地服务器的名称
        
          
            select
          
           @@SERVICENAME;--服务名
        
          
            select
          
           @@SPID;--当前会话进程id
        
          
            select
          
           @@
          
            textSize
          
          ;
        
          
            select
          
           @@version;--当前数据库版本信息
        
           
        
          --系统统计函数
        
          
            select
          
           @@CONNECTIONS;--连接数
        
          
            select
          
           @@PACK_RECEIVED;
        
          
            select
          
           @@CPU_BUSY;
        
          
            select
          
           @@PACK_SENT;
        
          
            select
          
           @@TIMETICKS;
        
          
            select
          
           @@IDLE;
        
          
            select
          
           @@TOTAL_ERRORS;
        
          
            select
          
           @@IO_BUSY;
        
          
            select
          
           @@TOTAL_READ;--读取磁盘次数
        
          
            select
          
           @@PACKET_ERRORS;--发生的网络数据包错误数
        
          
            select
          
           @@TOTAL_WRITE;--sqlserver执行的磁盘写入次数
        

 

Ø 输出语句

     T-SQL支持输出语句,用于显示结果。常用输出语句有两种:

     基本语法

          
            print
          
           变量或表达式
        
          
            select
          
           变量或表达式
        

    

      示例

          
            select
          
           1 + 2;
        
          
            select
          
           @@
          
            language
          
          ;
        
          
            select
          
           user_name();
        
           
        
          
            print
          
           1 + 2;
        
          
            print
          
           @@
          
            language
          
          ;
        
          
            print
          
           user_name();
        

     print在输出值不少字符串的情况下,需要用convert转换成字符串才能正常输出,而且字符串的长度在超过8000的字符以后,后面的将不会显示。

 

Ø 逻辑控制语句

     1、 if-else判断语句

          语法

          
            if
          
           <表达式>
        
              <命令行或程序块>
        
          
            else
          
          
            if
          
           <表达式>
        
              <命令行或程序块>
        
          
            else
          
        
              <命令行或程序块>
        

          示例

          if简单示例
        
          
            if
          
           2 > 3
        
          
            print
          
          
            '2 > 3'
          
          ;
        
          
            else
          
        
          
            print
          
          
            '2 < 3'
          
          ;
        
           
        
          
            if
          
           (2 > 3)
        
          
            print
          
          
            '2 > 3'
          
          ;
        
          
            else
          
          
            if
          
           (3 > 2)
        
          
            print
          
          
            '3 > 2'
          
          ;
        
          
            else
          
        
          
            print
          
          
            'other'
          
          ;
        
           
        
          简单查询判断
        
          
            declare
          
           @id 
          
            char
          
          (10),
        
                  @pid 
          
            char
          
          (20),
        
                  @name 
          
            varchar
          
          (20);
        
          
            set
          
           @name = 
          
            '广州'
          
          ;
        
          
            select
          
           @id = id 
          
            from
          
           ab_area 
          
            where
          
           areaName = @name;
        
          
            select
          
           @pid = pid 
          
            from
          
           ab_area 
          
            where
          
           id = @id;
        
          
            print
          
           @id + 
          
            '#'
          
           + @pid;
        
           
        
          
            if
          
           @pid > @id
        
          
            begin
          
        
          
            print
          
           @id + 
          
            '%'
          
          ;
        
          
            select
          
           * 
          
            from
          
           ab_area 
          
            where
          
           pid 
          
            like
          
           @id + 
          
            '%'
          
          ;
        
          
            end
          
        
          
            else
          
        
          
            begin
          
        
          
            print
          
           @id + 
          
            '%'
          
          ;
        
          
            print
          
           @id + 
          
            '#'
          
           + @pid;
        
          
            select
          
           * 
          
            from
          
           ab_area 
          
            where
          
           pid = @pid;
        
          
            end
          
        
          
            go
          
        

    

       2、 while…continue…break循环语句

          基本语法

          
            while
          
           <表达式>
        
          
            begin
          
        
             <命令行或程序块>
        
             [
          
            break
          
          ]
        
             [
          
            continue
          
          ]
        
             <命令行或程序块>
        
          
            end
          
        

          示例

          --while循环输出到
        
          
            declare
          
           @i 
          
            int
          
          ;
        
          
            set
          
           @i = 1;
        
          
            while
          
           (@i < 11)
        
          
            begin
          
        
          
            print
          
           @i;
        
          
            set
          
           @i = @i + 1;
        
          
            end
          
        
          
            go
          
        
           
        
          --
          
            while
          
          
            continue
          
           输出到
        
          
            declare
          
           @i 
          
            int
          
          ;
        
          
            set
          
           @i = 1;
        
          
            while
          
           (@i < 11)
        
          
            begin
          
        
          
            if
          
           (@i < 5)
        
          
            begin
          
        
          
            set
          
           @i = @i + 1;
        
          
            continue
          
          ;        
        
          
            end
          
        
          
            print
          
           @i;
        
          
            set
          
           @i = @i + 1;                
        
          
            end
          
        
          
            go
          
        
           
        
          --
          
            while
          
          
            break
          
           输出到
        
          
            declare
          
           @i 
          
            int
          
          ;
        
          
            set
          
           @i = 1;
        
          
            while
          
           (1 = 1)
        
          
            begin
          
        
          
            print
          
           @i;        
        
          
            if
          
           (@i >= 5)
        
          
            begin
          
        
          
            set
          
           @i = @i + 1;
        
          
            break
          
          ;        
        
          
            end
          
        
          
            set
          
           @i = @i + 1;                
        
          
            end
          
        
          
            go
          
        

    

     3、 case

          基本语法

          
            case
          
        
          
            when
          
           <条件表达式> 
          
            then
          
           <运算式>
        
          
            when
          
           <条件表达式> 
          
            then
          
           <运算式>
        
          
            when
          
           <条件表达式> 
          
            then
          
           <运算式>
        
             [
          
            else
          
           <运算式>]
        
          
            end
          
        

          示例

          
            select
          
           *,
        
          
            case
          
           sex 
        
          
            when
          
           1 
          
            then
          
          
            '男'
          
        
          
            when
          
           0 
          
            then
          
          
            '女'
          
        
          
            else
          
          
            '火星人'
          
        
          
            end
          
          
            as
          
          
            '性别'
          
        
          
            from
          
           student;
        
           
        
          
            select
          
           areaName, 
          
            '区域类型'
          
           = 
          
            case
          
        
          
            when
          
           areaType = 
          
            '省'
          
          
            then
          
           areaName + areaType
        
          
            when
          
           areaType = 
          
            '市'
          
          
            then
          
          
            'city'
          
        
          
            when
          
           areaType = 
          
            '区'
          
          
            then
          
          
            'area'
          
        
          
            else
          
          
            'other'
          
        
          
            end
          
        
          
            from
          
           ab_area;
        

    

       4、 其他语句

          批处理语句go
        
          
            Use
          
           master
        
          
            Go
          
        
           
        
          延时执行,类似于定时器、休眠等
        
          
            waitfor
          
           delay 
          
            '00:00:03'
          
          ;--定时三秒后执行
        
          
            print
          
          
            '定时三秒后执行'
          
          ;
        

转:SQL Server Transact-SQL 编程


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论