您的位置:首页 > 其它

事务,视图及索引!!!

2016-03-11 16:46 369 查看
事务

为什么需要事务?

因为要保证事务的一致性!!!

事务的四个属性:

1.原子性

  事务是一个完整的操作!

2.一致性

  当事务完成时,数据必须处于一致状态!

3.隔离性

  事务是独立的!

4.持久性

  持久性是指无论系统发生什么故障,事务处理的结果都是永久的!

这些特性通常简称为ACID

执行事务的语法

(1)开始事务

begin tran

这个语句显示地标记一个事务的起始点.

(2)提交事务

commit tran

这个语句标记事务成功结束。

(3)回滚(撤销事务)

rollback transaction

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

事务分类

1.显示事务

2.隐式事务

3.自动提交事务

示例1:

--转账
--在sql中如何开启事务
begin tran
declare @errorsum int
set @errorsum=0
update Bank set cardBalance-=49000
where cradId=1

--记录错误号
set @errorsum+=@@ERROR

update Bank set cardBalance+=49000
where cradId=2

set @errorsum+=@@ERROR
if(@errorsum>0)
begin
--数据回滚,其中一个操作时错误的,事务整体都会回滚 roolback
rollback tran
end
else
begin
--提交 commit
commit tran
end


视图

视图是保持在数据库中的select查询.

为什么需要视图?

  为保证数据库中数据的安全.

什么是视图?

  视图是另一种查看数据库中一个或多个表中数据方法

  视图充当着查询中指定表筛选器.

视图通常用来进行三种操作:

1.筛选表中的行

2.防止未经许可的用户访问敏感数据

3.将多个物理数据表抽象为一个逻辑数据表

使用T-SQL语句

创建视图的语法是:

create view view_name

as

<select 语句>

如果需要对以创建的视图进行查询代码修改,那么就需要删除已存在的同名视图,在重新创建.

删除视图

drop view vuew_name

查看视图

select col_name1,col_name2,..... from view_name

示例二:

--当前数据库
use MySchool
go
--检测视图是否存在:视图记录存放在系统表sysobjects中
if exists(select * from sysobjects where name='vw_student_result')
drop view vw_student_result
go
--创建视图
create view vw_student_result
as
select 姓名=studentname,学号=student.StudentNo,成绩=Studentresult,课程名称=Subjectname,考试时间=examdate
from Student
inner join Result on Student.StudentNo=Result.StudentNo
inner join Subject on Result.SubjectId=Subject.SubjectId
where Subject.SubjectId=
(
select SubjectId from Subject
where SubjectName='oop'
)
and ExamDate=
(
select max(ExamDate) from Result,Subject
where Result.SubjectId=Subject.SubjectId
and SubjectName='oop'
)
go


注意:

在视图里存储的是sql语句,并不是数据!

★:索引:是SQL Server编排数据的内部方法。它为SQL Server提供一种方法来编排查询数据

文章 3万个字

我爱你

Select * from Aritcle

Where content like ‘%我爱你%’

★:填充因子

★:索引会降低增删改效率

单位换算

1G=1024M

1M=1024K

1k=1024(byte)字节

1byte=8bit

4MB/s 512kb/s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: