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

    一:事务

    1.含义:事务是一个不可分割的整体,事务中的多个执行过程,同生共死。要么都执行成功,要么都执行失败。

    事务必须具备以下四个属性,(简称:ACID):

    ①.原子性(Atomicity):事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。

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

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

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

    2.如何执行事务?

    语法:

    ①:开始事务(显式地标记一个事务的起始点)

    Begin Transaction

    ②:  提交事务(标志一个事务成功结束)

    Commit  transaction

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

    Rollback  transaction

    3.事务分类

    在SqlServer中,事务有以下3种类型

    ①:显式事务:(实际开发中最常用,明确的指定事务的开始边界)

    ②:隐式事务:当以隐式事务操作时,Sql Server将在提交或回滚事务后自动启动新事务。不需要描述每个事务的开始,只要提交或回滚每个事务即可。

    ③:自动提交事务:Sql Server的默认模式,它将每条单独的T-SQL语句视为一个事务。

    4.应用示例:

    通过银行转账的案例说明在SQL中如何开启一个事务:

    5.编写事务时要遵守的原则:

    尽可能简短、访问的数据量尽量最少、查询数据时尽量不要使用事务、在事务处理过程中尽量不要出现等待用户输入的操作。

    二:视图

    1.对于视图的理解:不能保存数据,保存的是SQL语句。是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。

    <能不能对视图进行增删改操作。(答题的话可以,面试不可以)>

    2.如何创建和使用视图?

     创建视图两种方法:

    方法一:

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

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

    方法二:

    语法:

    Create VIEW view_name
    
    as
    
    <select  语句>

    使用T-SQL语句删除视图:

    语法:

    Drop VIEW view_name

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

    语法:

    select col_name1,col_name2,
    
    ......
    
    from view_name

    示例:

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

    3.使用视图的注意事项:

    ① 每个视图中可以使用多个表

    ② 与查询相似,一个视图可以嵌套另一个视图,但最好不要超过3层

    ③ 视图定义中的select语句不能包括下列内容:

    order by 子句,除非在select 语句的选择列表中也有一个top子句

    into 关键字

    引用临时表或表变量

    三:索引

    1.定义:

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

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

    2.作用:

    大大提高数据库的检索速度,改善数据库性能。

    3.索引分类:

    常用的索引有以下6类:

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

    主键索引:要求主键中的每个值是非空、唯一的。主键索引是唯一索引的特殊类型

    聚集索引:在聚集索引中,表中各行的物理顺序与键值得逻辑(索引)顺序相同。一个表只能包含一个聚集索引

    非聚集索引:使表中各行数据存放的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度

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

    全文索引:是一种特殊类型的基于标记的功能性索引。主要用于在大量文本文字中搜索字符串

    4.创建索引:

    使用T-SQL语句创建索引:

    语法:

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

    5.删除索引:

    语法:

    Drop index table_name.index_name

    注: 删除表时,该表的所有索引将同时被删除

         如果要删除表的所有索引,则先要删除非聚集索引,再删除聚集索引

    6.查看索引:

    ①:用系统存储过程sp_helpIndex查看

    语法:

    sp_helpIndex table_name

    ②:用视图sys.indexes查看

    语法:

    select * from sys.indexes
  • 相关阅读:
    深入理解volatile
    定时任务分布式锁的简单实现
    spring boot在tomcat运行多环境配置分离方案
    java spring boot data jpa和javaagent兼容问题
    RabbitMQ PHP操作类,守护进程及相关测试数据
    Python httpsqs封装类
    Python守护进程(多线程开发)
    python游戏打包exe
    处理谷歌地图marker旋转
    在vue-cli项目中mockjs和vConsole的使用
  • 原文地址:https://www.cnblogs.com/WJ-163/p/5266543.html
Copyright © 2011-2022 走看看