06章:事务、视图和索引

此生再无相见时 提交于 2020-03-18 13:58:17

一:事务

1.含义:事务是一个不可分割的整体,事务中的多个执行过程,同生共死。要么都执行成功,要么都执行失败。

事务必须具备以下四个属性,(简称:ACID):

①.原子性(Atomicity):事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。

②.一致性(Consistency):当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据库中存储的数据处于一致状态。

③.隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

④.持久性(Durability):指不管系统是否发生了故障,事务处理的结果都是永久的。

 

2.如何执行事务?

语法:

①:开始事务(显式地标记一个事务的起始点)

Begin Transaction

②:  提交事务(标志一个事务成功结束)

Commit  transaction

③:  回滚(撤销)事务(清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源)

Rollback  transaction

3.事务分类

在SqlServer中,事务有以下3种类型

①:显式事务:(实际开发中最常用,明确的指定事务的开始边界)

②:隐式事务:当以隐式事务操作时,Sql Server将在提交或回滚事务后自动启动新事务。不需要描述每个事务的开始,只要提交或回滚每个事务即可。

③:自动提交事务:Sql Server的默认模式,它将每条单独的T-SQL语句视为一个事务。

4.应用示例:

通过银行转账的案例说明在SQL中如何开启一个事务:

 

 

5.编写事务时要遵守的原则:

 

尽可能简短、访问的数据量尽量最少、查询数据时尽量不要使用事务、在事务处理过程中尽量不要出现等待用户输入的操作。

二:视图

1.对于视图的理解:不能保存数据,保存的是SQL语句。是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。

<能不能对视图进行增删改操作。(答题的话可以,面试不可以)>

2.如何创建和使用视图?

 创建视图两种方法:

方法一:

 展开数据库,选择“视图”,点击“新建视图”。

 

  单击“添加”,会自动出现连接,自动生成sql语句

方法二:

语法:

Create VIEW view_name

as

<select  语句>

 

使用T-SQL语句删除视图:

语法:

Drop VIEW view_name

 

使用T-SQL语句查看视图数据:

语法:

select col_name1,col_name2,

......

from view_name

示例:

--创建视图
create VIEW vw_Student
as
    select StudentName as 姓名, StudentNo as 学号,StudentResult as 学生成绩 from Student

--删除视图
drop VIEW vw_Student

--查看视图
select * from vw_Student

3.使用视图的注意事项:

 

① 每个视图中可以使用多个表

② 与查询相似,一个视图可以嵌套另一个视图,但最好不要超过3层

③ 视图定义中的select语句不能包括下列内容:

order by 子句,除非在select 语句的选择列表中也有一个top子句

into 关键字

引用临时表或表变量

三:索引

1.定义:

是SQL Server编排数据的内部方法,是检索表中数据的直接通道。

索引页是数据库中存储索引的数据页

2.作用:

大大提高数据库的检索速度,改善数据库性能。

3.索引分类:

常用的索引有以下6类:

唯一索引:不允许两行具有相同的索引值

主键索引:要求主键中的每个值是非空、唯一的。主键索引是唯一索引的特殊类型

聚集索引:在聚集索引中,表中各行的物理顺序与键值得逻辑(索引)顺序相同。一个表只能包含一个聚集索引

非聚集索引:使表中各行数据存放的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度

复合索引:在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引。

全文索引:是一种特殊类型的基于标记的功能性索引。主要用于在大量文本文字中搜索字符串

4.创建索引:

使用T-SQL语句创建索引:

语法:

create [unique] [clustered|nonclustered] index index_name

on table_name (column_name[,column_name]……)

[with filifactor=x]

5.删除索引:

语法:

Drop index table_name.index_name

注: 删除表时,该表的所有索引将同时被删除

     如果要删除表的所有索引,则先要删除非聚集索引,再删除聚集索引

6.查看索引:

①:用系统存储过程sp_helpIndex查看

语法:

 

sp_helpIndex table_name

 

②:用视图sys.indexes查看

语法:

select * from sys.indexes

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!