• 事务,视图及索引!!!


    事务

    为什么需要事务?

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

    事务的四个属性:

    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

  • 相关阅读:
    空格转换
    vuex学习
    css移动端适配方法
    数组以及数组常用方法
    21-canvas事件监听
    20-canvas之形变
    [转]session 跨域共享方案
    [转载] 从mysql,代码,服务器三个方面看mysql性能优化
    [计算机]Alan Perlis人物简介
    Python环境搭建及pip的使用
  • 原文地址:https://www.cnblogs.com/superws/p/5266311.html
Copyright © 2020-2023  润新知