第六章:事务、视图和索引
一、事务
1.事务
事务是一个整体,一个完整的操作,不可分割,要么都执行,要么都不执行。
2.事务的四个属性(简称ACID)
①原子性(Atomiaity): 事务的各元素是不可分的(原子的)。
②一致性(Consistency):当事务完成时,数据必须处于一致状态。
③隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不以任何方式依赖或影响其它事务。
④持久性(Durability):不管系统是否发生了故障,事务处理的结果都是永久的。
3.执行事务(transaction可以简写为tran)
①开始事务
begin transaction
这个语句显式地标记一个事务的起始点。
②提交事务
commit transaction
这个语句标志一个事务成功结束。
③回滚(撤销)事务
rollback transaction
清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源
4.一个小栗子!
--银行转账 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.视图
视图是一个虚拟的表,它不能用来存储数据,它存储的都是sql语句。
2.创建视图
第一种方法:
①展开数据库,选择“视图”,点击“新建视图”。
②单击“添加”,会自动出现连接,自动生成sql语句。
第二种方法:
代码:
create VIEW view_name as <select 语句>
3.删除视图
drop VIEW view_name
4.使用T-SQL语句查看视图数据
select col_name1,col_name2, …… from view_name
5.一个小栗子!
--创建视图 create VIEW vw_Student as select StudentName as 姓名, StudentNo as 学号,StudentResult as 学生成绩 from Student --查看视图 select * from vw_Student --删除视图 drop VIEW vw_Student
三、索引
1.索引
索引是SQL Server编排数据的内部方法,是检索表中数据的直接通道。
索引页是数据库中存储索引的数据页。
索引的作用是通过使用索引,大大提高数据库的检索速度,改善数据库性能。
2.索引分类
①唯一索引:不允许两行具有相同的索引值。
②主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
③聚集索引:表中各行的屋里顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。
④非聚集索引:非聚集索引建立在索引页上,当查询数据时可以从索引中找到记录存放的位置。非聚集索引使表中各行数据存放的物理顺序与键值的逻辑顺序不匹配。
⑤复合索引:在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引。
⑥全文索引:是一种特殊类型的基于标记的功能性索引。
3.创建索引
create [unique] [clustered|nonclustered] index index_name on table_name (column_name[,column_name]……) [with filifactor=x]
4.删除索引
drop index table_name.index_name
5.查看索引
--用系统存储过程sp_helpIndex查看 sp_helpIndex table_name --用视图sys.indexes查看 select * from sys.indexes