T-SQL 基础学习 03

  1 局部变量
  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 表 1WHERE 列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
时间: 2024-10-11 21:27:00

T-SQL 基础学习 03的相关文章

SQL基础学习_04_视图

视图 1. 视图的创建 ? ? 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: ? ? 由于视图并不实际保存数据,只是保存了执行的SELECT语句,可以节约存储空间,但是对于大数据量的存储,使用视图来频繁操作的话,势必会占用较大的计算时间,也算是一种用时间换空间的方案. ? ? 通过以下语句创建视图: ? ? CREATE VIEW 视图名称 (<视图列1>,<视图列2>,&

SQL 基础学习: 和深度学习资料

SQL is a standard language for storing, manipulating and retrieving data in databasee. 关系型数据库:RDBMS(Relational Database Mangement System) SQLite3: Rails默认的轻量级数据库,集成于Rails中,在db/development.sqlite3这个档案中. 用途:单机用途.所以在实际部署的时候会换成MySQL等数据库服务器. MySQL: 目前流行的开

sql基础学习

学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_name,column_name from table_name; #数据库中选取某个表格某几列数据 select * from table_name; #数据库中选取某个表格所有列数据 2.SELECT DISTINCT 语句 用于返回唯一不同的值. select distinct column_na

java基础学习03(java基础程序设计)

java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和continue的区别 二.数据类型划分 java的数据类型可分为基本数据类型与引用数据类型.基本数据类型包括了最基本的boolean.char.byte.short.int.long.float.double;引用数据类型是以一种特殊的方式指向变量的实体,这种机制类似于C/C++. 三.基本数据类型 j

SQL基础学习笔记(三)—约束

约束: 一.创建表时,定义约束 create table emp2( id number(10) constraint emp2_id_nn not null, name varchar2(20) not null, salary number(10,2) ) constraint emp2_id_nn 给约束起个名增加阅读性,不写也行,会自动加上sys_XXXX 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上) 定义方式:列约束必须跟在

SQL基础学习_05_函数、谓词、CASE表达式

函数 算术函数 1. 四则运算: +.-.*./? 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的位数) 字符串函数 1. 字符串拼接: ||, str1 || str2 || str3 || - || strn ?AS str_all 2. 字符串长度:LENGTH,LENGTH(str1) AS len_str1 3. 小写转换:LOWER,LOWER(str1) AS low_str 4.

SQL基础学习笔记(一)

感觉SQL,学的云里雾里的,整理一下笔记吧. SQL语言分为三种: DML: Data Manipulation Language 数据操纵语言 DDL:  Data Definition Language 数据定义语言 DCL:  Data Control Language 数据控制语言 select * (表示查询表中所有的列 ) from employees; select employee_id , last_name,email from employees;(查询指定) SELECT

SQL基础学习笔记(二)

向表中插入一条数据 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>create table emp1 as select employee_id , last_name , hire_date , salary from employees where 1 = 2</strong></span> 需要注意的是,插入的数据,必须和表中数据种类,一一对应 <

SQL基础学习_03_数据更新

数据的插入 1. 基本INSERT语句 ? ? INSERT的基本语法为: ? ? INSERT INTO ?<表名> (列1, 列2, 列3, ?-) VALUES (值1, 值2, 值3, -)??; ? ? 例如:INSERT INTO Shohin (shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi) VALUES ('pen','office',100,NULL,'2009-11-11'); ? ? 如果插入的是所