• 事务,视图与索引


    什么是事务?

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

    事务有四种属性:原子性(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=0
    24 update Bank set cardBalance-=500
    25 where cradId=1
    26 --记录错误号
    27 set @errorSum+=@@ERROR
    28 update Bank set cardBalance+=500
    29 where cradId=2
    30 
    31 
    32 set @errorSum+=@@ERROR
    33 if(@errorSum>0)
    34 begin
    35 --其中一个操作错误,事物回滚    rollbank
    36 rollback tran
    37 
    38 end
    39 else
    40 begin 
    41     commit tran    --提交   commit
    42 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_result
    10 as
    11 select 姓名=StudentName,学号=StudentNo,成绩=StudentResult,课程名称=SubjectName,考试日期=ExamDate
    12 from Student
    13 Inner join result on Student.StudentNo=Result.StudentNo
    14 inner join Subjrct on Result.StudentNo=Subject.SubjectNo
    15 where Subject.Subject=(
    16 secelt SubjectNo from SUBJECT WHERE SubjectName='JAVA Logic'
    17 )
    18 and examDate=(select max (examDate) from Result,Subject
    19 where Result.SubjectNo = Subject.SubjectNo
    20 and SubjectName='JAVALogic')
    21 GO
    22 --查看结果
    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 MySchool
    GO 
    --检测是否存在索引
    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 = 30
    GO

    查看索引

    1用系统存储过程sp_helplndex查看

    语法

    sp_helplndex table_name

    例如:

    exec sp_helplndexResult

    2.用视图sys.indexes查看

    语法

    select * from sys.indexes

    例如

    use trainingbase

    select * from sys.indexes 

  • 相关阅读:
    内存分配方式与变量的生存周期【转】
    C++动态内存创建与内存管理学习笔记【转】
    C内存分配问题(内存达人请进)【转】
    Singular Value Decomposition(SVD)奇异值分解【转】
    Euclidean space欧几里得空间【转】
    C语言面试题汇总(华为公司) 【转】
    C语言内存分配问题和C语言中的内存【转】
    iPhone无法在Mac的Finder中显示?如何解决问题
    OGRE 入门 三、Basic Tutorial 2 : Cameras, Lights, and Shadows
    leetcode 一个算法面试题相关的网站
  • 原文地址:https://www.cnblogs.com/1And0/p/5271225.html
Copyright © 2020-2023  润新知