事务、视图和索引

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

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


 

原文地址:https://www.cnblogs.com/WuXuanKun/p/5266075.html