博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事务,视图与索引
阅读量:5370 次
发布时间:2019-06-15

本文共 3126 字,大约阅读时间需要 10 分钟。

什么是事务?

事务是作为单个逻辑工作单元执行的一系列操作。

事务有四种属性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),及持久性(Durability)简称为(ACID)。

原子性:事务是一个完整的操作,事务的各个元素是不能分的(原子的)。

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

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

持久性:事务的持久性不管系统是否发生了故障,事务的处理结果是永久性的。

如何执行事务

1.执行事务语法

  begin tran

这句显示地标记一个实物的起始点。

2.提交事务

  commit tran

这句话标志一个事务成功结束。

3.回滚(撤销)事务。

  rollback tran

清除自事务起始点至该语句所做所有丢数据的更新操作,将数据状态回滚到事务开始之前。

事务分为三种:显示事务,隐式事务,自动提交事务

1 create table Bank 2 ( 3    cradId int identity(1,1) primary key not null, 4    cardOwner nvarchar(32), 5    cardBalance numeric(18,2)  6 ) 7  8  9 alter table Bank 10 add constraint CK_cardBalance Check(cardBalance>1) 11 12 13 insert into Bank 14 values ('张三',10000)15 insert into Bank 16 values ('李四',10)17 18 19 select * from Bank 20 21 begin tran 22 declare @errorSum int 23 set @errorSum=024 update Bank set cardBalance-=50025 where cradId=126 --记录错误号27 set @errorSum+=@@ERROR28 update Bank set cardBalance+=50029 where cradId=230 31 32 set @errorSum+=@@ERROR33 if(@errorSum>0)34 begin35 --其中一个操作错误,事物回滚    rollbank36 rollback tran37 38 end39 else40 begin 41     commit tran    --提交   commit42 end

视图

视图是保存在数据库中的select查询。视图是一种虚拟图表。

如何创建和使用视图

创建视图

单击 “新建视图” 进入

选取需要的表来执行操作

选取生成的代码来执行查询操作,会出现以下效果。

语法

  create viewview_name

    AS

  <select语句>

如果对已经建立的视图进行查询代码修改,那么就需要删除已存在的同名数据,再从新创建。

使用T-SQL语句删除视图

语法

  drop viewview_name

if exists(    select * from sysobjects where name='view_name '       )drop view view_name

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

语法

select col_name1,col_name2,.... from view_name

例如

1 --当前数据库 2 use MySchool 3 GO 4 --检测视图是否存在:视图记录存放在系统表sysobjects中 5     if exists (select * from sysobjects where name='vw_studet_result') 6         drop view vw_studebt_result 7 GO 8 --创建视图 9 create viewvw_student_result10 as11 select 姓名=StudentName,学号=StudentNo,成绩=StudentResult,课程名称=SubjectName,考试日期=ExamDate12 from Student13 Inner join result on Student.StudentNo=Result.StudentNo14 inner join Subjrct on Result.StudentNo=Subject.SubjectNo15 where Subject.Subject=(16 secelt SubjectNo from SUBJECT WHERE SubjectName='JAVA Logic'17 )18 and examDate=(select max (examDate) from Result,Subject19 where Result.SubjectNo = Subject.SubjectNo20 and SubjectName='JAVALogic')21 GO22 --查看结果23 Select  * fromvw_student_result

索引

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

索引分类:

1.唯一索引 2.主键索引 3.聚集索引 4.非聚集索引 5.复合索引 6. 全文索引

创建索引

使用T-SQL语句创建索引

语法

  create [UNIQUE] [CLUSERED|NONCLUSTERED] index index_name

  on table_name (column_name[, col_name]...)

  [WITH FILLFACTOR=X]

删除索引

语法

  dropindextable_name.index_name

伤处索引时应注意以下几点:

1.删除表时该表的所有索引将同时被删除。

2.如果删除表中的所有索引,则先要删除非聚集索引,在删除聚集索引

use MySchoolGO --检测是否存在索引if exists (select name from sysindexes        where name ='ix_Student_StudentName')drop index Student.ix_Student_StudentName --删除索引    --创建非聚集索引;填充因子为30%create nonclustered index ix_Student_StudentName        on Student (StudentName)        where fillfactor = 30GO

查看索引

1用系统存储过程sp_helplndex查看

语法

sp_helplndex table_name

例如:

exec sp_helplndexResult

2.用视图sys.indexes查看

语法

select * from sys.indexes

例如

use trainingbase

select * from sys.indexes 

转载于:https://www.cnblogs.com/1And0/p/5271225.html

你可能感兴趣的文章
python 常用模块
查看>>
离线安装redis-cluster
查看>>
GraphQL入门
查看>>
记录微信浏览器里word链接点击没反应的bug
查看>>
python入门01/历史/种类/变量/常量/注释/基础数据类型/if语句
查看>>
sharepoint 2010 页面刷新时滚动条位置保持不变 Controlling scrollbar position on postback...
查看>>
[HDU](5178)pairs ---二分查找(查找)
查看>>
code1044 导弹拦截
查看>>
HTML5 APIs程序员指南
查看>>
Presentation与自定义Dialog的使用
查看>>
四轴飞行器的原理和组成
查看>>
Gallery3D的使用
查看>>
如何去了解JavaScript引擎的工作原理
查看>>
1103. Distribute Candies to People--Easy
查看>>
effective C++ 条款 25:考虑写出一个不抛出异常的swap函数
查看>>
[C/C++]在头文件中使用static定义变量意味着什么
查看>>
java中Set的用法
查看>>
bay——安装_Oracle 12C-单实例-Centos7 -DG.txt
查看>>
P3242 [HNOI2015]接水果
查看>>
Tomcat 初始
查看>>