zoukankan      html  css  js  c++  java
  • SQL Server Transact-SQL 编程

      1 T-SQL语句用于管理SQL Server数据库引擎实例,创建和管理数据库对象,以及查询、插入、修改和删除数据。 
      2 
      3 Ø 变量 
      4 
      5      1、 局部变量(Local Variable) 
      6 
      7           局部变量是用户可以自定义的变量,它的作用范围是仅在程序内部,在程序中通常用来储存从表中查询到的数据或当做程序执行过程中的暂存变量。使用局部变量必须以@开头,而且必须用declare命令后才能使用。 
      8 
      9   
     10 
     11           基本语法: 
     12 
     13 
     14 声明变量
     15 declare @变量名 变量类型 [@变量名 变量类型]
     16 为变量赋值
     17 set @变量名 = 变量值;
     18 select @变量名 = 变量值;
     19 
     20           
     21 
     22           示例: 
     23 
     24 
     25 --局部变量
     26 declare @id char(10)--声明一个长度的变量id
     27 declare @age int    --声明一个int类型变量age
     28     select @id = 22    --赋值操作
     29     set @age = 55    --赋值操作
     30     print convert(char(10), @age) + '#' + @id
     31     select @age, @id
     32 go
     33  
     34 简单hello world示例
     35 declare @name varchar(20);
     36 declare @result varchar(200);
     37 set @name = 'jack';
     38 set @result = @name + ' say: hello world!';
     39 select @result;
     40  
     41 查询数据示例
     42 declare @id int, @name varchar(20);
     43 set @id = 1;
     44 select @name = name from student where id = @id;
     45 select @name;
     46  
     47 select赋值
     48 declare @name varchar(20);
     49 select @name = 'jack';
     50 select * from student where name = @name;
     51 
     52           从上面的示例可以看出,局部变量可用于程序中保存临时数据、传递数据。Set赋值一般用于赋值指定的常量个变量。而select多用于查询的结果进行赋值,当然select也可以将常量赋值给变量。 
     53 
     54           注意:在使用select进行赋值的时候,如果查询的结果是多条的情况下,会利用最后一条数据进行赋值,前面的赋值结果将会被覆盖。 
     55 
     56   
     57 
     58      2、 全局变量(Global Variable) 
     59 
     60           全局变量是系统内部使用的变量,其作用范围并不局限于某一程序而是任何程序均可随时调用的。全局变量一般存储一些系统的配置设定值、统计数据。 
     61 
     62 
     63 全局变量
     64 select @@identity;--最后一次自增的值
     65 select identity(int, 1, 1) as id into tab from student;--将studeng表的烈属,以/1自增形式创建一个tab
     66 select * from tab;
     67 select @@rowcount;--影响行数
     68 select @@cursor_rows;--返回连接上打开的游标的当前限定行的数目
     69 select @@error;--T-SQL的错误号
     70 select @@procid;
     71  
     72 --配置函数
     73 set datefirst 7;--设置每周的第一天,表示周日
     74 select @@datefirst as '星期的第一天', datepart(dw, getDate()) AS '今天是星期';
     75 select @@dbts;--返回当前数据库唯一时间戳
     76 set language 'Italian';
     77 select @@langId as 'Language ID';--返回语言id
     78 select @@language as 'Language Name';--返回当前语言名称
     79 select @@lock_timeout;--返回当前会话的当前锁定超时设置(毫秒)
     80 select @@max_connections;--返回SQL Server 实例允许同时进行的最大用户连接数
     81 select @@MAX_PRECISION AS 'Max Precision';--返回decimal 和numeric 数据类型所用的精度级别
     82 select @@SERVERNAME;--SQL Server 的本地服务器的名称
     83 select @@SERVICENAME;--服务名
     84 select @@SPID;--当前会话进程id
     85 select @@textSize;
     86 select @@version;--当前数据库版本信息
     87  
     88 --系统统计函数
     89 select @@CONNECTIONS;--连接数
     90 select @@PACK_RECEIVED;
     91 select @@CPU_BUSY;
     92 select @@PACK_SENT;
     93 select @@TIMETICKS;
     94 select @@IDLE;
     95 select @@TOTAL_ERRORS;
     96 select @@IO_BUSY;
     97 select @@TOTAL_READ;--读取磁盘次数
     98 select @@PACKET_ERRORS;--发生的网络数据包错误数
     99 select @@TOTAL_WRITE;--sqlserver执行的磁盘写入次数
    100 
    101   
    102 
    103 Ø 输出语句 
    104 
    105      T-SQL支持输出语句,用于显示结果。常用输出语句有两种: 
    106 
    107      基本语法 
    108 
    109 
    110 print 变量或表达式
    111 select 变量或表达式
    112 
    113      
    114 
    115       示例 
    116 
    117 
    118 select 1 + 2;
    119 select @@language;
    120 select user_name();
    121  
    122 print 1 + 2;
    123 print @@language;
    124 print user_name();
    125 
    126      print在输出值不少字符串的情况下,需要用convert转换成字符串才能正常输出,而且字符串的长度在超过8000的字符以后,后面的将不会显示。 
    127 
    128   
    129 
    130 Ø 逻辑控制语句 
    131 
    132      1if-else判断语句 
    133 
    134           语法 
    135 
    136 
    137 if <表达式>
    138     <命令行或程序块>
    139 else if <表达式>
    140     <命令行或程序块>
    141 else
    142     <命令行或程序块>
    143 
    144           示例 
    145 
    146 
    147 if简单示例
    148 if 2 > 3
    149     print '2 > 3';
    150 else
    151     print '2 < 3';
    152  
    153 if (2 > 3)
    154     print '2 > 3';
    155 else if (3 > 2)
    156     print '3 > 2';
    157 else
    158     print 'other';
    159  
    160 简单查询判断
    161 declare @id char(10),
    162         @pid char(20),
    163         @name varchar(20);
    164 set @name = '广州';
    165 select @id = id from ab_area where areaName = @name;
    166 select @pid = pid from ab_area where id = @id;
    167 print @id + '#' + @pid;
    168  
    169 if @pid > @id
    170     begin
    171         print @id + '%';
    172         select * from ab_area where pid like @id + '%';
    173     end
    174 else
    175     begin
    176         print @id + '%';
    177         print @id + '#' + @pid;
    178         select * from ab_area where pid = @pid;
    179     end
    180 go
    181 
    182      
    183 
    184        2whilecontinue…break循环语句 
    185 
    186           基本语法 
    187 
    188 
    189 while <表达式>
    190 begin
    191    <命令行或程序块>
    192    [break]
    193    [continue]
    194    <命令行或程序块>
    195 end
    196 
    197           示例 
    198 
    199 
    200 --while循环输出到
    201 declare @i int;
    202     set @i = 1;
    203 while (@i < 11)
    204     begin
    205         print @i;
    206         set @i = @i + 1;
    207     end
    208 go
    209  
    210 --while continue 输出到
    211 declare @i int;
    212     set @i = 1;
    213 while (@i < 11)
    214     begin                
    215         if (@i < 5)
    216             begin
    217                 set @i = @i + 1;
    218                 continue;        
    219             end
    220         print @i;
    221         set @i = @i + 1;                
    222     end
    223 go
    224  
    225 --while break 输出到
    226 declare @i int;
    227     set @i = 1;
    228 while (1 = 1)
    229     begin        
    230         print @i;        
    231         if (@i >= 5)
    232             begin
    233                 set @i = @i + 1;
    234                 break;        
    235             end        
    236         set @i = @i + 1;                
    237     end
    238 go
    239 
    240      
    241 
    242      3case 
    243 
    244           基本语法 
    245 
    246 
    247 case
    248    when <条件表达式> then <运算式>
    249    when <条件表达式> then <运算式>
    250    when <条件表达式> then <运算式>
    251    [else <运算式>]
    252 end
    253 
    254           示例 
    255 
    256 
    257 select *,
    258     case sex 
    259         when 1 then ''
    260         when 0 then ''    
    261         else '火星人'
    262     end as '性别'
    263 from student;
    264  
    265 select areaName, '区域类型' = case
    266         when areaType = '' then areaName + areaType
    267         when areaType = '' then 'city'
    268         when areaType = '' then 'area'
    269         else 'other'
    270     end
    271 from ab_area;
    272 
    273      
    274 
    275        4、 其他语句 
    276 
    277 
    278 批处理语句go
    279 Use master
    280 Go
    281  
    282 延时执行,类似于定时器、休眠等
    283 waitfor delay '00:00:03';--定时三秒后执行
    284 print '定时三秒后执行';
    View Code
  • 相关阅读:
    转载:[Oracle]杀死正在执行的sql语句
    转载:记录一次MySQL两千万数据的大表优化解决过程
    转载:logback日志详解
    转载:MySQL千万级大表优化攻略
    使用dbUnit的 IDataSet 因乱序造成assert失败而采取的措施
    解锁用户scott并授权
    两表连接各种Join图示,SQL及查询结果
    一句Delete..In.. 删除语句的优化
    大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
    大数据技术之_08_Hive学习_01_Hive入门+Hive安装、配置和使用+Hive数据类型
  • 原文地址:https://www.cnblogs.com/yangpeng-jingjing/p/4710689.html
Copyright © 2011-2022 走看看