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

 

posted @ 2015-08-07 14:27  Debugs  阅读(214)  评论(0编辑  收藏  举报