第六章:事务,视图和索引

一.事务

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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/jingpeipei/p/5266042.html