zoukankan      html  css  js  c++  java
  • 第六章:事务,视图和索引

    一.事务

    1.什么是事务?

    事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求

    2.事务的属性(ACID)

         1)原子性

            事务是一个完整的操作.事务的各元素是不可分割的

         2)一致性

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

         3)隔离性

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

         4)持久性

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

    3.如何执行事务

      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
    作者:Monodrama
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    [北大机试C]:走迷宫(BFS)
    [北大机试B][OpenJ_Bailian-2965]:玛雅历(模拟)
    [北大机试A]:有趣的跳跃(模拟)
    [2019北大机试D]:最大上升子序列和(DP)[计蒜客-T1221/HDU1087]
    [牛客练习赛53] A.超越学姐爱字符串 [dp]
    [牛客][北大考研复试]I Wanna Go Home[dijkstra]
    SP1716 GSS3
    牛客小白月赛13_A_小A的签到题
    自习室管理系统,基于B/S模式下的JAVA系统
    基于SSH的聊天室
  • 原文地址:https://www.cnblogs.com/jingpeipei/p/5266042.html
Copyright © 2011-2022 走看看