zoukankan      html  css  js  c++  java
  • T-SQL的事物、视图和索引

           事物,视图和索引

           技能掌握目标:

           1.使用事物保证操作的完整性

           2.掌握如何创建视图

           3.掌握如何创建并使用索引

    首先我们要讲的是事物,那么问题来了,请问大家什么事物,他有什么作用?

    带来了哪几大好处?分别是什么。

    答案:事物就是把多件事情当做一件事情来处理的过程。也就是大家同在一条船上,要活一起活,要over一起over !,这也就是保证了事物的一致性和完整性。

    其作用是保证事物的一致性,持久性,原子性,和隔离性。

    1.一致性:就是当我们需要更新多条数据的时候,保证他们一荣俱荣,一损俱损。

    就好比如,有啷个蚂蚱在同一条船上,如果船漏水了,两个蚂蚱都要死,如果船不漏水,那么两个蚂蚱都活下来

     

    2.持久性:当数据库通过事物完成某种操作的时候,其结果和数据库的改变时永久保存在数据库中。

     

    3.隔离性:事物的隔离性也就是保证了数据不会出现以下几个问题:

    3.1.脏读

      解析:如果一个事务A对数据进行了更改,但是还没有提交,而另一个事务B就可以读到事务A尚未提交的更新结果。这样,当事务A进行回滚时,那么事务B开始读到的数据就是一笔脏数据。

    3.2.不可重复读

      解析:不可重复读:同一个事务在事务过程中,对同一个数据进行读取操作,读取到的结果不同。例如,事务B在事务A的更新操作前读到的数据,跟在事务A提交此更新操作后读到的数据,可能不同。

    3.3.幻读

      解析:同样一个查询在整个事务中多次执行,查询所得的结果不同。例如,事务A对全部记录做了更新操作,尚未提交前,事务B又插入了一条记录,那么事务A再次读取数据库时,会发现还有一条记录(即事务B新插入的记录)没有做更新。

     

       总体来说,隔离级别与系统并发性成反比,与数据一致性成正比

    4.原子性:事务的原子性指的是,事务中包含的程序作为系统的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。原子性的意义是数据库系统的基础。

     

     

    介绍完了什么是事物后,我给大家讲一下怎么使用事物:

    它的语法是:

    1.开始事物 :begin transaction

    2.提交事物 :commit transaction

    3.回滚事物 :rollback transaction

    那么我带着大家写一个事物,让大家有直观的感受:

     

    BEGIN tran

       DECLARE @count int

       SET @count=0

       --balance有约束,其的值不能小于1

       UPDATE cardInfo SET balance=0  where cardID='1010 3576 1212 1004' --错误的更新

       SET @count=@count+@@error --记录其上面语句的错误信息

     

     

       --接下来更新一条正确的信息

       UPDATE cardInfo SET balance =1000 WHERE cardID = '1010 3576 1212 1130' --正确的更新

       SET @count=@count+@@error --记录其上面语句的错误信息

          PRINT @count

       IF (@count<>0)

       begin

          print '交易失败,事物将进行回滚````'

      rollback tran

       end

       else

       begin

          print '交易成功,事物将进行提交,谢谢合作!'

      commit tran

       end

     

     

    事物我就给大家讲到这里,接下来我们讲解视图

     

    还是这个问题,既然要讲视图,那么就要了解视图,请问大家,什么是视图,视图都有哪些好处?

     

    答案:

    什么事视图

    解析:视图是另一种查看数据库中一个或者多个表中的数据的方法,他是一个虚拟表,通常是作为来自一个或多个表的行或列的自己创建的。

    通俗的说就是:视图是储存了一堆SQL语句的虚拟表,注意:在创建虚拟表的时候不可以使用UPDATE语句

    视图都有哪些好处?

    解析:好处有两个,分别是1.对最终用户的好处,就是说可以让用户更容易理解,获取数据更容易。2.对开发人员的好处,限制数据检索跟容易,维护应用程序更容易。

     

    创建视图有两种方式,分别是使用T-SQL语句创建和使用手动创建。

    接下来让我给大家使用两种方式分别创建视图,让大家有一个直观的好处。

    第一种方式:

       --创建视图的T-SQL语句

       --检查视图是否存在,当视图存在的时候,吧该名称的视图删除,然后新建视图

       IF exists(SELECT * FROM sysobjects where name='vw_cardInfo_userInfo')

       DROP VIEW vw_carInfo_cuserInfo

       GO

       CREATE view vw_cardInfo_userInfo--创建视图的名称

       as

       select cardID AS 银行卡号,pass AS 密码,customerName AS 姓名 FROM cardInfo,userInfo

       WHERE userInfo.customerID=cardInfo.customerID

       GO

     

       SELECT * FROM vw_cardInfo_userInfo

    第二种方式:

     

    恩恩~~~相对来说我还是推荐大家使用第一种方式,使用T-SQL语句进行创建视同,因为这样会让大家看起来有点专业的感觉~~~~~~

     

    好的 视图我们就讲到这里了,我们还剩下最后一个知识点,就是索引了。

    既然讲到这里,那么问题来了,请大家回答一下,什么事索引?,索引分为几大类,分别是什么,最主要的两种是哪两种?

     

    解析:索引就好比我们本书的目录,都有哪些章节,在第几页,更方便与我们的查找与应用,而无需我们一页一页的查找了。

    分别分为6大类:

    1.唯一索引 关键字unique是唯一索引的名字 创建唯一索引必须加上 unique

       use MyGongZuoZhanDian

    --创建索引

    GO

    IF exists(SELECT * FROM sysindexes where name='IX_Detailed_Name')

     DROP INDEX Detailed.IX_Detailed_Name

     /*创建唯一索引*/

     CREATE unique index IX_Detailed_Name

     on Detailed(Name)

       WITH FILLFACTOR = 30

    GO

     

     

    /*调用*/

    SELECT * FROM Admin

     WITH (INDEX=IX_Detailed_Name)

     where id>=0

       以下的调用方法和这个差不多,所以我也就不多写了~

    2.主键索引

        聚集索引在你创建主键列 并且设置成自增列的时候 他会自动创建。

    3.聚集索引

        use MyGongZuoZhanDian

    --创建索引

    GO

    IF exists(SELECT * FROM sysindexes where name='IX_Detailed_Name')

     DROP INDEX Admin.IX_Detailed_Name

     /*创建聚集索引索引*/

     CREATE CLUSTERED index IX_Detailed_Name

     on admin(id)

       WITH FILLFACTOR = 30

    GO

     

    4.非聚集索引 关键字 nonclustered 是非聚集索引的名字 创建非聚集索引必须加上 nonclustered ,index 是创建索引的关键字,FILLFACTOR  是设置填充因子的关键字

      use MyGongZuoZhanDian

    --创建索引

    GO

    IF exists(SELECT * FROM sysindexes where name='IX_Detailed_Name')

     DROP INDEX Detailed.IX_Detailed_Name

     /*创建非聚集索引*/

     CREATE nonclustered index IX_Detailed_Name

     on Detailed(Name)

       WITH FILLFACTOR = 30

    GO

     

    5.复合索引

       用户可以在多个列上建立索引,

    这种索引叫做复合索引(组合索引)。复合索引的创建方法与创建单一索引的方法完全一样。但复合索引在数据库操作期间所需的开销更小,

    可以代替多个单一索引。当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度。

    6.全文索引

        全文索引与普通的索引不同,普通的索引是以B-tree结构来维护的,而全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server全文引擎服务创建和维护的。使用全文索引可以快速、灵活地为存储在SQL Server数据库中的文本数据创建基于关键字查询的索引,与like语句不同,like语句的搜索是适用于字符模式的查询,而全文索引是根据特定语言的 规则对词和短语的搜索,是针对语言的搜索。

     

    推广:http://www.cnblogs.com/fengyepiaoluo/p/4058050.html

  • 相关阅读:
    [APIO2007]风铃
    [APIO2011]方格染色
    [APIO2016]烟火表演
    [APIO2013]机器人
    [APIO2015]巴厘岛的雕塑
    [APIO2015]八邻旁之桥
    [APIO2010]特别行动队
    [APIO2015]雅加达的摩天楼
    WC2019游记
    退役前的做题记录3.0
  • 原文地址:https://www.cnblogs.com/fengyepiaoluo/p/4058300.html
Copyright © 2011-2022 走看看