T-SQL 基础学习 03
时间:2021-07-01 10:21:17
帮助过:2人阅读
局部变量
2
3 在T
-SQL中,局部变量的名称必须以标记
@作为前缀
4
5 语法
6
7 DECLARE @变量名数据类型
8
9 局部变量的赋值
10
11 方法一
12
13 SET @变量名 = 值
14
15 方法二
16
17 SELECT @变量名 = 值
18
19 SET和SELECT的区别
20
21 SET: 一般用于给变量指定的数据常量
22
23 SELECT: 一般用于从表中查询数据,然后再赋给变量
24
25 (筛选值记录不多于一条,多于一条,将把最后一条记录赋值给变量)
26
27
28
29 SET
30
31 SELECT
32
33 同时对多个变量赋值
34
35 不支持
36
37 支持
38
39 表达式返回多个值时
40
41 出错
42
43 将返回的最后一个值赋给变量
44
45 表达式未返回值时
46
47 变量被赋NULL值
48
49 变量保持原值
50
51 提示:
52
53 推荐使用SET,原因是因为SET语句没有结果集,占用资源少.
54
55 全局变量
56
57 注意
58
59 SQL Server中所有的全局变量都使用两个
@标志作为前缀
60
61 全局变量
62
63 变量
64
65 含义
66
67 @@ERROR
68
69 最后一个T
-SQL错误的错误号
70
71 @@IDENTITY
72
73 最后一次插入的标识值
74
75 @@LANGUAGE
76
77 当前使用的语言的名称
78
79 @@MAX_CONNECTIONS
80
81 可以创建的同时连接的最大数目
82
83 @@ROWCOUNT
84
85 受上一个SQL语句影响的行数
86
87 @@SERVERNAME
88
89 本地服务器的名称
90
91 @@SERVICENAME
92
93 该计算机上的SQL服务的名称
94
95 @@TIMETICKS
96
97 当前计算机上每刻度的微秒数
98
99 @@TRANSCOUNT
100
101 当前连接打开的事务数
102
103 @@VERSION
104
105 SQL Sserver的版本信息
106
107 PRINT语句和SELECT语句
108
109 解释
110
111 用于输出显示处理的数据结果
112
113 语法
114
115 PRINT 局部变量或字符串
--输出的结果在消息窗口中以文本方式显示
116
117 SELECT局部变量
AS 自定义列名
--输出的结果将在结果窗口中以表格方式显示
118
119 注释
120
121 SELECT语句输出数据是查询语句的特殊应用
122
123 注意
124
125 使用PRINT语句要求以单个变量或字符串表达式作为参数,而”
+”运算符作为连接两个字符串的连接符,要求”
+”运算符两侧的操作数的数据类型必须一致
126
127 CAST()和CONVERT()函数
128
129 语法
130
131 CAST(表达式
AS 数据类型)
132
133 CONVERT(数据类型
[(长度)],长度
[,样式])
134
135 两种语法的区别
136
137 CAST()函数用于将某种数据类型的表达式显示转换为另一种数据类型
138
139 CONVERT()函数用于将某种数据类型的表达式显示转换为另一种数据类型
140
141 BEGIN-END逻辑控制语句
142
143 解释
144
145 BEGIN-END语句将多个T
-SQL语句定义成一个语句快,把每个语句块视为一个单元处理
146
147 语法
148
149 BEGIN
150
151 语句或语句块
152
153 END
154
155 规范
156
157 BEGIN和END语句应该放置在新的一行
158
159 IF-ELSE条件语句
160
161 解释
162
163 IF-ELSE条件语句属于分支结构
164
165 语法
166
167 IF(条件)
168
169 BEGIN
170
171 语句或语句块1
172
173 语句或语句块2
174
175 END
176
177 ELSE
178
179 BEGIN
180
181 语句或语句块3
182
183 语句或语句块4
184
185 END
186
187 WHILE循环语句
188
189 解释
190
191 WHILE循环语句可以根据某些条件重复执行一条SQL语句或一个语句块
192
193 语法
194
195 WHILE(条件)
196
197 BEGIN
198
199 语句或语句块
200
201 [BREAK|CONTINUE]
202
203 END
204
205 BREAK 将跳出当前循环,结束WHILE循环
206
207 CONTINUE 跳过CONTINUE语句后面的语句,回到WHILE循环的第一条语句
208
209 CASE多分支语句
210
211 解释
212
213 CASE-END语句计算一组条件表达式,并返回其中一个符合条件的结果
214
215 语法
216
217 CASE
218
219 WHEN条件1
THEN 结果1
220
221 WHEN条件2
THEN 结果2
222
223 [ELSE其他结果]
224
225 END
226
227 批处理结束语句GO
228
229 解释
230
231 批处理可以提高语句执行的效率,批处理结束的标志是”
GO”
232
233 语法
234
235 *****
236
237 GO
238
239 子查询
240
241 定义
242
243 子查询就是在一条查询语句中包含另外一个查询语句
244
245 语法
246
247 SELECT……
FROM 表 1
WHERE 列1
>(子查询)
--子查询只能返回单个值
248
249 子查询的运用环境
250
251 UPDATE,
INSERT,
DELETE,
SELECT
252
253 SELECT语句使用注意
254
255 SELECT* FROM 表名
256
257 这种方式效率比较低不推荐使用
258
259 SELECT列表
FROM 表名 WHERE条件表达式
260
261 这种方式效率比上一种效率更高
262
263 表命名别名比较
264
265 使用AS关键字,符合ANSI国际标准
266
267 SELECT列表
FROM 表名
AS 表的别名
268
269 使用空格,简便的方法
270
271 SELECT列表
FROM 表名表的别名
272
273 IN和NOT IN子查询
274
275 IN关键字可以使主查询匹配子查询返回的多个单列值
276
277 NOTIN与之相反
278
279 EXISTS子查询
280
281 定义
282
283 检测数据是否存在
284
285 语法
286
287 IF EXISTS(子查询)
288
289 语句
290
291 比较IF
292
293 IF(bool类型数据)
294
295 IFEXISTS(子查询)
296
297 NOTEXISTS
298
299 与EXISTS相反
300
301 子查询的注意事项
302
303 1. 子查询语句可以嵌套在SQL语句中任何表达式出现的位置
304
305 2. 嵌套在SELECT语句的SELECT子句中
306
307 a)
SELECT (子查询)
FROM 表名
308
309 3. 嵌套在SELECT语句的FROM子句中
310
311 a)
SELECT * FROM(子查询)
AS 表的别名
312
313 4. 嵌套在父查询SELECT语句的子查询可包括
314
315 a) SELECT子句
316
317 b) FROM子句
318
319 c) WHERE子句
320
321 d)
GROUP BY子句
322
323 e) HAVING子句
324
325 5. 在子查询的SELECT子句中不能出现TEXT,NTEXT或IMAGE数据类型
326
327 6. 只出现在子查询中而没有出现在父查询中的表不能包含在输出列中
328
329 查询,合并多个表中的数据的三种方法
330
331 第一种
332
333 联合(
Union) 合并多个数据集中的行
334
335 第二种
336
337 子查询 将一个查询嵌套在另一个查询中
338
339 第三种
340
341 连接 合并多个数据表中的列
342
343 数据库分页技术
344
345 DECLARE @pageSizeint -- 每页记录条数
346
347 DECLARE @totalPages int -- 总页数 定义变量
348
349 DECLARE @counts int -- 总记录条数
350
351 DECLARE @currentPage int -- 当前所在页
352
353 SET @pageSize = 5 --每页记录
354
355 SET @currentPage = 2 --当前所在页数
356
357 SELECT @counts = COUNT(
*)
FROM dbo.hos_house
--给总记录条数赋值
358
359 IF(
@counts % @pageSize = 0)
-- 计算总页数
360
361 SET @totalPages = @counts / @pageSize
362
363 ELSE
364
365 SET @totalPages = @counts / @pageSize + 1 --不满足条记录的把最后一页算上
366
367 -- 分页显示:子查询
368
369 SELECT TOP (
@pageSize)
* FROM hos_house
370
371 WHERE HMID
NOT IN(
372
373 --每页显示记录条数*(当前所在页-1)
374
375 SELECT TOP (
@pageSize *(
@currentPage - 1)) HMID
FROM hos_house
376
377 )
378
379 事务
380
381 定义
382
383 事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行
384
385 使用
386
387 事务是作为最小的控制单元来使用的.
388
389 ACID
390
391 1. 原子性(Atomicity)
392
393 2. 一致性(Consistency)
394
395 3. 隔离性(lsolation)
396
397 4. 持久性(Durability)
398
399 语法
400
401 1. 开始事务
402
403 a) BEGINTRANSACTION
404
405 2. 提交事务
406
407 a) COMMITTRANSACTION
408
409 3. 回滚(撤销)事务
410
411 a) ROLLBACKTRANSACTION
412
413 事务的分类
414
415 显示事务
416
417 用BEGIN
TRANSACTION 明确指定事务的开始
418
419 隐式事务
420
421 通过设置SET IMPLICIT_TRANSACTIONS ON语句,将隐式事务模式设置为打开
422
423 自动提交事务
424
425 SQLServer的默认模式,它将每条单独的T
-SQL语句视为一个事务
426
427 事务使用原则
428
429 1.事务尽可能简短
430
431 2.事务中访问的数据量尽量最少
432
433 3.查询数据时尽量不要使用事务
434
435 4.在事务处理过程中尽量不要出现等待用户输入的操作
436
437 事务中的并发控制
>锁
438
439 锁的类型
440
441 A. 共享锁
442
443 a) 不对数据进行修改的时候使用,比如读操作
444
445 B. 排它锁
446
447 a) 对数据进行修改的时候,如:
UPDATE,DELETE等操作
448
449 C. 更新锁
450
451 a) 在准备修改将被修改的数据上,更新锁比排它锁的并发性强在同一个资源上允许同时实施更新锁和共享锁
452
453 D. 意向锁
454
455 a) 可以在表中的页上或行上实施锁,提高并发性
456
457 注意
458
459 如果对一个数据实施了排它锁,就不能再在上面实施共享锁,也不能再实施其他事务的排它锁.不在事务里的单条语句当语句执行完毕时,锁自动解除.但是在实施了共享锁的资源上可以再实施共享锁,即两个事务可以同时读取相同的资源而不用等待
460
461 事务的隔离级别
462
463 A. 读未提交(
READ UNCOMMITTED):产生脏读,不可重复读,幻像读.
464
465 B. 提交读(
READ COMMITTED):系统默认隔离级别.执行完自动释放资源会产生不可重复读
466
467 C. 可以重复读(
REPEATABLE READ):在读数据的时候,实施在读操作中使用的数据上的共享锁一直存在.直到事务提交,但是不能避免幻像读
468
469 D. 序列化(
SERIALIZABLE):解决了幻像读的问题.但是并发性很低.隔离级别设置越高,并发性就会越低
470
471 设置事务隔离级别
472
473 语法
474
475 SETTRANSACTION
ISOLATION LEVEL {隔离级别名}
476
477 死锁优先级的设置
478
479 语法
480
481 SETDEADLOCK_PRIORITY {级别
|@deadlock_var}
482
483 死锁超时时间设置
484
485 语法
486
487 SETLOCK_TIMEOUT 时间
488
489 注:
490
491 @@LOCK_TIMEOUT返回当前的锁设置的时间.默认为
-1
492
493 视图
494
495 定义
496
497 视图是另一种查看数据库中一个或多个表中的数据的方法
498
499 视图的三种操作
500
501 1. 筛选表中的行
502
503 2. 防止未经许可的用户访问敏感数据
504
505 3. 将多个物理数据表抽象为一个逻辑数据表
506
507 视图的好处
508
509 1. 用户的好处
510
511 a) 结果更容易理解
512
513 b) 获得数据更容易
514
515 2. 开发人员的好处
516
517 a) 限制数据检索更容易
518
519 b) 维护应用程序更方便
520
521 创建视图语法
522
523 CREATE VIEW view_name
524
525 AS
526
527 <select 语句
>
528
529 删除视图
530
531 DROP VIEW view_name
532
533 查看视图
534
535 SELECT col_name1,col_name2…..
FROM 视图名
转载出至:http://blog.csdn.net/heqingsong1/article/details/7495496
T-SQL 基础学习 03
标签: