zoukankan      html  css  js  c++  java
  • 事务,视图,和索引.

    什么是事务?

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

    事务是单个的工作单元。如果某一事务成功,则在该事物中进行的所有数据更改均会提交,成为数据库中永久的组成部分,如果事务遇到

    错误且必须取消或回滚,则所有数据均被清除。

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

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

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

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

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

    如何执行事务

    1.执行事务语法

      begin tran

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

    2.提交事务

      commit tran

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

    3.回滚(撤销)事务。

      rollback tran

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

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

    create table Bank
    (
       cradId int identity(1,1) primary key not null,
       cardOwner nvarchar(32),
       cardBalance numeric(18,2) 
    )
    
    
    alter table Bank 
    add constraint CK_cardBalance Check(cardBalance>1) 
    
    
    insert into Bank 
    values ('张三',10000)
    insert into Bank 
    values ('李四',10)
    
    
    select * from Bank 
    
    begin tran 
    declare @errorSum int 
    set @errorSum=0
    update Bank set cardBalance-=500
    where cradId=1
    --记录错误号
    set @errorSum+=@@ERROR
    update Bank set cardBalance+=500
    where cradId=2
    
    
    set @errorSum+=@@ERROR
    if(@errorSum>0)
    begin
    --其中一个操作错误,事物回滚    rollbank
    rollback tran
    
    end
    else
    begin 
        commit tran    --提交   commit
    end

    视图

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

    视图是一种虚拟表,通常是作为来自一个或多个表的行或者列的子集创建的。

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

    如何创建和使用视图

    创建视图有两种方法,使用SQLerver和使用T-sql

    使用SQLerver 在这里不多做介绍。

    使用T-sql 创建视图

    语法
    
      create viewview_name
    
        AS
    
      <select语句>
    
    如果对已经建立的视图进行查询代码修改,那么就需要删除已存在的同名数据,再从新创建。
    
    使用T-SQL语句删除视图
    
    语法
    
      drop viewview_name

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

    语法

    select col_name1,col_name2,.... from view_name

    例如

    --当前数据库
    use MySchool
    GO
    --检测视图是否存在:视图记录存放在系统表sysobjects中
        if exists (select * from sysobjects where name='vw_studet_result')
            drop view vw_studebt_result
    GO
    --创建视图
    create viewvw_student_result
    as
    select 姓名=StudentName,学号=StudentNo,成绩=StudentResult,课程名称=SubjectName,考试日期=ExamDate
    from Student
    Inner join result on Student.StudentNo=Result.StudentNo
    inner join Subjrct on Result.StudentNo=Subject.SubjectNo
    where Subject.Subject=(
    secelt SubjectNo from SUBJECT WHERE SubjectName='JAVA Logic'
    )
    and examDate=(select max (examDate) from Result,Subject
    where Result.SubjectNo = Subject.SubjectNo
    and SubjectName='JAVALogic')
    GO
    --查看结果
    Select  * fromvw_student_result

    索引

    什么是索引,

    索引,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。
    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
    索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
    索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
    在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

    使用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.如果删除表中的所有索引,则先要删除非聚集索引,在删除聚集索引

    查看索引

    1用系统存储过程sp_helplndex查看

    语法

    sp_helplndex table_name

    例如:

    exec sp_helplndexResult

    2.用视图sys.indexes查看

    语法

    select * from sys.indexes

    例如

    use trainingbase

    select * from sys.indexes 

  • 相关阅读:
    Mac 修改hosts
    MTK平台系统稳定性分析
    由MTK平台 mtkfb 设备注册疑问引发的知识延伸--ARM Device Tree
    mtk display 架构
    【6572】关于mtk平台display模块的学习探讨
    如何用Bugzilla系统管理产品研发过中相关需求和bug
    Bugzilla 系统企业应用案例
    MT6753平台一项目不同手机最低亮度存偏差问题分析过程
    嵌入式驱动实习生试题(答案)
    嵌入式驱动实习生试题
  • 原文地址:https://www.cnblogs.com/zhangzhenzhen/p/5268579.html
Copyright © 2011-2022 走看看