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