事务,视图及索引!!!
事务
为什么需要事务?
因为要保证事务的一致性!!!
事务的四个属性:
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