事务、视图、索引:

事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“。

视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写)

索引:提高“数据检索效率”

事务:

---- 用于保证多条SQL语句的同步执行(要么一起全部执行成功,要么全部都回滚不执行)

---- 语法:

Begin Transaction        (开始事务)

{  多条SQL语句 }

commit  Transaction    (提示事务)

rollback  Transaction    (回滚事务)

---- 实际编码:

declare  @errorSum  int

set  @errorSum = 0

Begin Transaction

insert into .......(SQL语句)

set @errorSum = @errorSum + @@ERROR

insert into .......(SQL语句)

set @errorSum = @errorSum + @@ERROR

......

if  @errorSum = 0

commit  transaction

else

rollback  transaction

事务特点:

------ 原子性、一致性、隔离性、持久性

原子性:整个事务,无论其中包含多少SQL语句,都是一个整体!要么都提交,要么都回滚;

一致性:事务执行前后,整个数据库都满足各种约束条件

隔离性:多个事务操作同一数据对象,彼此的“执行过程”和“效果”相互隔离,互不影响。

持久性:虽然事务执行过程中,对数据库的影响具有不确定性(提交、回滚),但是一旦事务结束(commit、rollback),对数据库照成的影响将是持久存在的。

事务分类:

------ 显式事务、隐式事务、自动提交事务

显式事务:以Begin Transaction开始,rollback \commit 结束的事务

隐式事务:以“开关”(ON)方式打开事务,当事务结束后,自动开始新事务,直到“开关”关闭(OFF)

自动提交事务:SQL SERVER 的默认事务方式,每句SQL都是独立的事务

视图:

---- 当我们进行数据库设计时,为了减少数据的冗余,常常会将生活中本身关联在一起的数据,拆分到不同的表单中!这样,导致在访问数据时,SQL代码复杂,效率也低下(多表联查)。可以将“多表联查”的SQL语句预先存放在数据库中,从减少每次使用时,都重新编写的麻烦!

----- 视图:就是保存在数据库中的“一条”“select语句”。视图的使用与“Table”相似,但table中直接存放着数据,但是view中没有存放数据,数据依然存放在其对应的基础表中。

----- 视图中Select语句,编写时的注意事项:

      • order       by (除非含有Top)
      • into
      • 表变量(临时表)

------ 视图的应用场景:

      • 简化后台数据库的结构,方便编写数据访问代码简化sql(将多个物理数据库当做一个逻辑数据库)
      • 保护“敏感数据”,防止非法访问!(通过其Select对行、列进行过滤)

索引:

------- 将数据表中的某列进行排序,让其以后对该列的查询能够在“排序后”的结果上进行,从而提高数据检索的效率(排序的过程可以在新的索引表中进行【非聚集索引】,也可以在原有的表单中进行【聚集索引】)

-------- 创建语法:

if exists(select * from sysindexes where  name = '索引名')

drop  index  表名.索引名

go

create index 索引名  on   表名(列名)

go

索引分类:

      • 唯一索引---- 索引表中所有的索引项,不允许重复
      • 主键索引---- 依据表单的主键列,创建索引表
      • 非聚集索引  ----- 将表单中的“搜索列”,复制到索引表并排序。(数据表与索引表各自单独存在)
      • 聚集索引 ---- 在原始的物理表单上,直接对“搜索列”进行排序。(数据表与索引表合二为一)

注意:

1、一个表单只能创建一个“聚集索引”,但可以创建多个“非聚集索引”

2、表单在创建主键时,将自动在表单上创建一个“主键索引”及“聚集索引”

索引的利弊:

利:提高数据检索效率

弊:增加了系统的数据存储开销、数据更改时效率降低

索引的应用场景:

适用:频繁搜索(where),频繁被查询(select) ,排序,关联查询的列(主外键列)

不适用:行少、列数据变化少

小贴士:

系统表名

所在数据库

存放的系统信息

sysDataBases

master

数据库信息

sysObjects

用户数据库

表、视图、存储过程

sysIndexes

用户数据库

索引

select ....

into 新表名

from ....

----- 作用,将查询结果,保存到一个【新建的数据表单】中。

优化MySchool数据库(事务、视图、索引)的更多相关文章

  1. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

  2. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  3. 优化MySchool数据库(一)

    <优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...

  4. accp7.0优化MySchool数据库设计内测笔试题总结

    1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...

  5. 优化MySchool数据库(二)

    优化School数据库(TSQL建库建表建约束) 使用T_sql代码建库.建表.建约束: 建库: Create database HotelManagerSystem on ( ---- 数据文件-- ...

  6. 关于MySQL 事务,视图,索引,数据库备份,恢复

      /*创建数据库*/ CREATE DATABASE `mybank`;/*创建表*/USE mybank;CREATE TABLE `bank`(    `customerName` CHAR(1 ...

  7. Sql Server数据库之事务,视图,索引

    一.事务的定义 事务是一种机制,包含一组操作指令,并将所有的命令作为一个整体一起向系统提交或撤销操作请求(要么都执行,要么都不执行) 二.事务的分类 显式事务:用Begin TRANSCATION开始 ...

  8. 优化MySchool数据库设计总结

    数据库的设计   一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...

  9. 优化MySchool数据库设计

    第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...

随机推荐

  1. HT for Web的HTML5树组件延迟加载技术实现

    HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的 ...

  2. 关于IHttpModule的相关知识总结

    一.IHttpModule相关概述 using System; namespace System.Web { public interface IHttpModule { // 销毁不再被HttpMo ...

  3. 可显示Android设备选择列表,并进入指定Android设备Console的Shell脚本

    如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell.比较麻烦,本文为此编写了一个Shell脚本文件(需要在Li ...

  4. Emit学习(4) - Dapper解析之数据对象映射(二)

    承接着上一篇, 这一篇主要以堆栈的方式来演示一下, db数据转换到类中去的一个过程. 一.先看第一张图 程序在运行到176行(上一篇贴出的代码)的时候, 就会出现上图中的第一个栈. 那在此之前, Da ...

  5. java for 的用法总结

    J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类 ...

  6. C#编程总结(五)多线程带给我们的一些思考

    C#编程总结(五)多线程带给我们的一些思考 如有不妥之处,欢迎批评指正. 1.什么时候使用多线程? 这个问题,对于系统架构师.设计者.程序员,都是首先要面对的一个问题. 在什么时候使用多线程技术? 在 ...

  7. 算法实例-C#-快速排序-QuickSort

    算法实例 ##排序算法Sort## ### 快速排序QuickSort ### bing搜索结果 http://www.bing.com/knows/search?q=%E5%BF%AB%E9%80% ...

  8. SSH实例(2)

    在WebContent\WEB-INF\下新建两个文件:applicationContext.xml和web.xml. web.xml: <?xml version="1.0" ...

  9. PHP程序员7小时学会Kotlin 第二小时

    Kotlin中,一切皆对象:PHP则并非一切皆对象,甚至不需要对象的存在即可完成系统功能开发,我们现在可以接触到的旧的系统都可以说明这一点. 基本数据类型 数值型 类型 位长 双精度浮点型Double ...

  10. 用于PHP的Gearman Worker管理工具GearmanManager

    项目地址:https://github.com/brianlmoon/GearmanManager PHP环境要求 PHP 5.5.9 POSIX extension Process Control ...