zoukankan      html  css  js  c++  java
  • TSQL 基础学习 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                      批处理可以提高语句执行的效率,批处理结束的标志是”GO232 
    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
  • 相关阅读:
    FreeSql 教程引导
    Day3-JS-JavaScript 函数专题
    Day2-JS-JSON
    Day2-JS-let和const
    Day2-JS-this 关键字
    Day2-JS-JavaScript 验证 API
    Day2-JS-表单
    Day2-JS-严格模式
    Day2-JS-JavaScript 错误
    Day2-JS-正则表达式
  • 原文地址:https://www.cnblogs.com/ciade/p/4788324.html
Copyright © 2011-2022 走看看