• 事务、视图和索引


    特殊的高级数据处理和查询,包括事务、视图和索引

    6.1事务(Transaction )是单个工作单元,SQL Server中允许用户创建视图,在同一原始数据表的基础上,为不同的用户选择不同的列。如果某一事务成功,则在该食物中的进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。

    6.1.1  Why需要事务

    事务是一种机制,一个操作序列,他包括了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行.

    事务是作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有4个属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、及持久性(Durability),这些特性通常简称为ACID。

    1.原子性   事务是一个完整的操作.

    2.一致性    当事务完成时,数据必须处于一致状态.

    3.隔离性  对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的.它不应以任何方式依赖于或影响其他事务.

    4.持久性  事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久地.

    1.执行事务的语法

    (1)开启事务

    BEGIN TRANSACTION
    -- 这个语句显示地标记一个事务的起始点

    (2)提交事务

    COMMIT TRANSACTION
    --标志一个事务成功结束

    (3)回滚(撤销)事务

    ROLLBACK TRANSACTION
    --清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源.

     事务分类:

    显式事务:用begin transaction明确指定事务的开始

    隐式事务:通过设置set implicit_transactions on 语句,将隐式事务模式设置为打开

    自动提交事务:这是SQL server 的默认模式,它将每条单独的T-SQL语句视为一个事务

    事务应用示例

    复制代码
    --开始转账!
    begin transaction  --开启事务
    declare @errorsum int
    set @errorsum=0
      update Bank set cardBalance-=10000
      where cradId=1
    set @errorsum+=@@ERROR  --记录错误号
      update Bank set cardBalance+=10000
      where cradId=2
    set @errorsum+=@@ERROR  --记录错误号
    
    --判断是否有错误
    if(@errorsum>0)
    begin
       rollback transaction --事务回滚,
    end
    else
    begin
       commit transaction --事务提交,
    end
    复制代码

    二.视图

    1.什么是视图?

    视图是种虚拟表,不能保存数据

    2.创建和使用视图

       第一种方法:

    1)展开数据库,选择视图

    2)添加表自动连接,会自动生成相应的T-SQL语句

    3)选择希望查看的列,然后单击运行

     第二种方法:

    create View view_name
      as
        select语句

    3.删除视图

    drop View view_name

    4.查看视图数据

    select col_name1,col_name2,........  from view_name

    示例

    --创建视图
    create view vw_Bank
    as 
    select * from Bank
    --查询视图
    select * from vw_Bank

    三.索引

    1.什么是索引?

    索引是SQL Server编排数据的内部方法,是检索表中数据的直接通道

    索引页是数据库中存储索引的数据页

    索引的作用是通过使用索引,提高数据库的检索速度,改善数据库性能

    2.索引分类

      1)唯一索引

         唯一索引不允许两行具有相同的索引值

      2)主键索引

       主键索引是唯一索引的特殊类型

      3)聚集索引

       在聚集索引中,表中各行的物理顺序和键值的逻辑顺序相同

      4)非聚集索引

       非聚集索引建立在索引页上,当查询数据时可以从索引中找到记录存放的位置

     注意:

            在一张表中只能有一个聚集索引,但非聚集索引可以有多个,最多可以有254个,如果唯一一张表设置了主键,那么该列会自动提升为聚集索引,聚集索引和表中的物理记录顺序一致

      5)复合索引

      在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引成为复合索引

      6)全文索引

       全文索引是一种特殊类型的基于标记的功能性索引

      3.创建索引 

    create [unique] [clustered|nonclustered] index index_name
    on table_name (column_name[,column_name]...)
    [with fillfactor=x]

    4.删除索引

    drop index table_name.index_name

    5.查看索引

       1)用系统存储过程sp_helpindex查看

    sp_helpindex table_name

      2)用视图sys.indexes

    select * from sys.indexes


     

  • 相关阅读:
    小数据池,bytes
    不会的知识总结:
    nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
    备份了一个nginx的虚拟主机配置文件报错
    centos修改ssh端口
    CentOS安装配置Git服务器(gitosis)
    干货CentOS6.5_Nginx1.40_Php5.57_MySQL5.5.35编译安装全记录
    编译升级php
    php源代码安装常见错误与解决办法分享
    兼容IE,Firefox,Opera等浏览器的添加到收藏夹js代码实现
  • 原文地址:https://www.cnblogs.com/WuXuanKun/p/5266075.html
Copyright © 2020-2023  润新知