sqlserver中 事物 索引及视图

 

  1.                                              事务
         1、什么是事务
              事务是一个不可分割的工作逻辑单元,它包含了一组数据库的操作命令,并且所有命令作为一个整体一起向系统提交或撤销操作请求,即要么都执行,要么都不执行
      2、事务的4个属性
              (1)、原子性(Atomicity):事务是一个完整的操作,事务个元素不可分
              (2)、一致性(Consistency):当事务完成时,数据必须处于一致状态
              (3)、隔离性(Isolation):对数据进行修改的所有并发事务时彼此隔离的,这表明事务必须时独立的,它不应该以任何方式依赖于或影响其他事务
              (4)、持久性(Durability):事务完成后,它对于系统的影响是永久性的
        3、创建事务的语法:
             --开始事务--
             begin transaction
                 --定义变量,累计事务执行过程中的错误--
          declare @errorSum int
                 set @errorSum=0      --初始化为0,即无错误
          --增删改操作---
          set  @errorSum = @errorSum [email protected]@error   --累计是否有错误
          ........
    
          --根据是否有错误,确定事务是提交还是撤销--
          if(@errorSum=0)
                      commit transaction    --提交事务
          else
                      rollback transaction   --撤销事务
    
          注意:变量@errorSum只对增删改进行操作,查询并不需要
    
     4、什么时候使用事务
         当一个操作由多个增删改组成的时候,则应用事务
    
                                                          索引
    
        1、什么是索引
           它是SQL Server编排数据的内部方法,为SQL Server提供一种方法来编排查询数据的路径,相当于字典里的目录
        2、索引的分类
               (1)、唯一索引:唯一索引不允许两行具有相同的索引值
              (2)、主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型
              (3)、聚集索引:  表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能由一个
              (4)、非聚集索引:非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以是多个,小于249个
         3、创建索引
              语法:
              create [unique] [clustered | nonclustered] index index_name
                  on table_name (column_name[,column_name]....)
                   [
                        fillfactor=x
                ]
    
               unique指定唯一索引,可选
             clustered、nonclustered指定是聚集索引还是非聚集索引,可选
             fillfactor表示填充因子,指定一个0~100的值,该值指示索引页填满的空间所占的百分比
    
            示例:
               use stuDB
               go
               /*--检测是否存在该索引(索引存放在系统表sysindexes中)--*/
              if exists(select name from sysindexes
                             where name=‘ix_stumarks_writtenexam‘)
                    drop index  stumarks.ix_stumarks_writtenexam     --删除索引
             /*--笔试列创建非聚集索引:填充因子为30%--*/
             create nonclustered index ix_stumarks_writtenexam
              on stumarks(writtenexam)
              with  fillfactor=30
              go
    
          3、应该创建索引和不应该创建索引
             应该创建索引:
                 经常以这个列进行查询
                 经常以这个列进行排序
             不应该创建索引:
                表的数据量小时,不应创建(会先查索引页,然后再表)
                当某列的值经常发生变更(修改数据会影响到索引页)
                当该列的值比较单一的情况(比如该列的值为性别 男和女)
                                                  视图
          1、什么是视图
               视图是另一种查看数据库中一个或多个表中的数据的方法,视图是一种虚拟表
          2、语法
               create view view_name
                as <select语句>
               注意:视图可以对表进行增删改查, 但建议不对其使用增删改,多用来进行查询
时间: 2024-10-21 20:53:53

sqlserver中 事物 索引及视图的相关文章

SQLServer中使用索引视图(物化视图)

物化视图:以前用的普通的视图,普通视图就是一段逻辑语句,对性能没有任何的提升,也不能创建索引,而物化视图会把视图里查询出来的数据在数据库上建立快照,它和物理表一样,可以创建 索引,主键约束等等,性能会有质的提升,但是其有缺点,会占用,可以设置它定时自动更新一次,也可以手动更新,当然也是可以设置及时更新的,但是会拉慢基表的增删改查操作,在这里我只讲思路,具体的话大家可以自己去研究. + ? --创建物化视图,每天晚上22:00:00自动更新 create materialized view VM_

sqlserver数据库的索引、视图和触发器

  Sqlserver数据库的索引.视图和触发器 数据库的索引类似于字典中的目录,无需阅读.可以直接利用目录快速查找所需要的信息 索引的种类: 聚集索引:反应的是数据存储的物理顺序,一个表只能包含一个聚集索引 非聚集索引:不反应数据存储的物理顺序,一个表可以有多个非聚集索引 1.1. 准备环境 1.1.1. 创建聚集索引 目前tstudent表中没有任何索引也没有主键 为tstudent表创建聚集索引 选中studentID,单击左上侧的主键按钮 为Tstuden表的studentID创建主键就

SQLServer中使用索引视图

在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你查询它之前,视图并不做任何事情. 索引视图 在SQL Server 2000和2005中,你能够给视图增加索引.但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立一个索引呢?嗯,这比较麻烦. 索引视图是一个已被物化或保存在数据库中的视图.当基本表更新时,给视

sqlserver中的存储过程 函数 事物 索引及视图

                                       存储过程和函数具体的区别: 核心提示:本质上没区别.只是函数有限制只能返回一个标量,而存储过程可以返回多个.并且函数是可以嵌入在SQL中使用的,可以在SELECT等SQL语句中调用,而存储过程不行.执行的本质都一样. 函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少. 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强. 2. 对于存储过程来说可以返回参数,而函数只

SQLServer中在视图上使用索引(转载)

在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你查询它之前,视图并不做任何事情. 索引视图 在SQL Server 2000和2005中,你能够给视图增加索引.但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立一个索引呢?嗯,这比较麻烦. 索引视图是一个已被物化或保存在数据库中的视图.当基本表更新时,给视

SQLServer中间接实现函数索引或者Hash索引

本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后做查询,如果使用函数或者其他方式作用在字段上之后,就会限制到索引的使用,不过我们可以间接地实现类似于函数索引的功能.另外一个就是如果查询字段较大或者字段较多的时候,所建立的索引就显得有点笨重,效率也不高,就需要考虑使用一个较小的"替代性"字段做等价替换,类似于Hash索引,本文粗浅地介绍两

SQLSERVER中如何忽略索引提示

原文:SQLSERVER中如何忽略索引提示 SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候,我们一般会在查询语句里加索引提示,就像这样 SELECT id,name from TB with (index(IX_xttrace_bal)) where bal<100 当在生产环境里面,由于这个索引提示的原因,优化器一般不会再去考虑其他的索引,那有时候这个索引提示可能会导致查询变慢 经过你的测试,发现确实是因为这个索引提示的关系导致查询变慢,但是SQL服务器已经缓存

SQLServer 索引以及视图

业务 主键: 索引: 锁: ========================================= 一个页分为 页头 页体--存储行 页尾 页是有固定大小的,但是数据不一定存满,有可能产生碎片,就是行跨页 ========================================= 排序: 存储是排序的 索引维护成本要低:所以在修改量与索引维护有关. 全表扫描: 数据存储在硬件上可能不是连续的....... 查询优化器: 为什么会自动优化SQL,因为数据库里面存储了一些统计信息

SQLserver中的视图与主外键的创建

一.背景 原来学过数据库的相关内容,只是形式上的,从来也没有实践过,徐徐飘过而已,如今在做机房时,很多知识需要用到视图,才开始去慢慢的实践. 视图:我理解的就是一张表,它把我们所需要的某个表或某几个表中的部分信息提取出来,形成了一张临时的表. 它主要有两个优点:1.简单,它呈现给我们的数据就是我们想要的数据,没有多余的. 2.安全,提供给用户它们权限范围内的数据 我为什么会用到视图?举一个简单的例子,在查询用户信息时,我们可能会用到两张表中的内容.那么这个时候我就需要将两张表中我需要的数据提取出