事务,视图及索引!!!

 

事务

为什么需要事务?

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

事务的四个属性:

1.原子性

  事务是一个完整的操作!

2.一致性

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

3.隔离性

  事务是独立的!

4.持久性

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

这些特性通常简称为ACID

执行事务的语法

(1)开始事务

begin tran

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

(2)提交事务

commit tran

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

(3)回滚(撤销事务)

rollback transaction

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

事务分类

1.显示事务

2.隐式事务

3.自动提交事务

 示例1:

 1 --转账
 2  --在sql中如何开启事务
 3  begin tran
 4  declare @errorsum int
 5  set @errorsum=0
 6  update Bank set cardBalance-=49000
 7  where cradId=1
 8  
 9  --记录错误号
10  set @errorsum+=@@ERROR
11  
12  update Bank set cardBalance+=49000
13  where cradId=2
14  
15  set @errorsum+=@@ERROR
16  if(@errorsum>0)
17  begin
18  --数据回滚,其中一个操作时错误的,事务整体都会回滚 roolback
19  rollback tran
20  end
21  else
22  begin
23  --提交 commit
24  commit tran
25  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

 

posted @ 2016-03-11 16:46  吴松~  阅读(219)  评论(0编辑  收藏  举报