zoukankan      html  css  js  c++  java
  • 第六章:事务、视图和索引

    一、事务

    1.事务

       事务是一个整体,一个完整的操作,不可分割,要么都执行,要么都不执行。

    2.事务的四个属性(简称ACID)

       ①原子性(Atomiaity): 事务的各元素是不可分的(原子的)。

       ②一致性(Consistency):当事务完成时,数据必须处于一致状态。

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

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

    3.执行事务(transaction可以简写为tran)

       ①开始事务

      begin transaction

           这个语句显式地标记一个事务的起始点。

       ②提交事务

    commit transaction

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

       ③回滚(撤销)事务

    rollback transaction

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

    4.一个小栗子!

    --银行转账
    begin transaction  --开启事务
    declare @errorsum int
    set @errorsum=0
      update Bank set cardBalance-=10000
      where cradId=1
    set @errorsum+=@@ERROR  --记录错误号
      update Bank set cardBalance+=10000
      where cradId=2
    set @errorsum+=@@ERROR  --记录错误号
    
    --判断是否有错误
    if(@errorsum>0)
    begin
       rollback transaction --事务回滚,
    end
    else
    begin
       commit transaction --事务提交,
    end

    二、视图

    1.视图

       视图是一个虚拟的表,它不能用来存储数据,它存储的都是sql语句。

    2.创建视图

    第一种方法:

       ①展开数据库,选择“视图”,点击“新建视图”。

       ②单击“添加”,会自动出现连接,自动生成sql语句。

    第二种方法:

       代码:

    create VIEW view_name
    as
    <select 语句>

    3.删除视图

    drop VIEW view_name

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

    select col_name1,col_name2, …… from view_name

    5.一个小栗子!

    --创建视图
    create VIEW vw_Student
    as
        select StudentName as 姓名, StudentNo as 学号,StudentResult as 学生成绩 from Student
    
    --查看视图
    select * from vw_Student
    
    --删除视图
    drop VIEW vw_Student

    三、索引

    1.索引

       索引是SQL Server编排数据的内部方法,是检索表中数据的直接通道。

       索引页是数据库中存储索引的数据页。

       索引的作用是通过使用索引,大大提高数据库的检索速度,改善数据库性能。

    2.索引分类

       ①唯一索引:不允许两行具有相同的索引值。

       ②主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

       ③聚集索引:表中各行的屋里顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。

       ④非聚集索引:非聚集索引建立在索引页上,当查询数据时可以从索引中找到记录存放的位置。非聚集索引使表中各行数据存放的物理顺序与键值的逻辑顺序不匹配。

       ⑤复合索引:在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引。

       ⑥全文索引:是一种特殊类型的基于标记的功能性索引。

    3.创建索引

    create [unique] [clustered|nonclustered] index index_name
    on table_name (column_name[,column_name]……)
    [with filifactor=x]

    4.删除索引

    drop index table_name.index_name

    5.查看索引

    --用系统存储过程sp_helpIndex查看
    sp_helpIndex table_name
    
    
    --用视图sys.indexes查看
    select * from sys.indexes
  • 相关阅读:
    开始我的博客
    POJ 1284:Primitive Roots(素数原根的个数)
    数据结构作业——图的存储及遍历(邻接矩阵、邻接表+DFS递归、非递归+BFS)
    NYOJ 85:有趣的数(打表,规律)
    NYOJ 12:喷水装置(二)(贪心,区间覆盖问题)
    HDU 2058:The sum problem(数学)
    HDU 1716:排列2(全排列)
    HDU 2048:神、上帝以及老天爷(错排公式,递推)
    NYOJ 6:喷水装置(一)(贪心)
    BZOJ 2002:Bounce 弹飞绵羊(分块)
  • 原文地址:https://www.cnblogs.com/hr1997/p/5266020.html
Copyright © 2011-2022 走看看