sqlserver中 事物 索引及视图
事务
1、什么是事务
事务是一个不可分割的工作逻辑单元,它包含了一组数据库的操作命令,并且所有命令作为一个整体一起向系统提交或撤销操作请求,即要么都执行,要么都不执行
2、事务的4个属性
(1)、原子性(Atomicity):事务是一个完整的操作,事务个元素不可分
(2)、一致性(Consistency):当事务完成时,数据必须处于一致状态
(3)、隔离性(Isolation):对数据进行修改的所有并发事务时彼此隔离的,这表明事务必须时独立的,它不应该以任何方式依赖于或影响其他事务
(4)、持久性(Durability):事务完成后,它对于系统的影响是永久性的
3、创建事务的语法:
--开始事务--
begin transaction
--定义变量,累计事务执行过程中的错误--
declare @errorSum int
set @errorSum=0 --初始化为0,即无错误
--增删改操作---
set @errorSum = @errorSum +@@error --累计是否有错误
........ --根据是否有错误,确定事务是提交还是撤销--
if(@errorSum=0)
commit transaction --提交事务
else
rollback transaction --撤销事务 注意:变量@errorSum只对增删改进行操作,查询并不需要 4、什么时候使用事务
当一个操作由多个增删改组成的时候,则应用事务 索引 1、什么是索引
它是SQL Server编排数据的内部方法,为SQL Server提供一种方法来编排查询数据的路径,相当于字典里的目录
2、索引的分类
(1)、唯一索引:唯一索引不允许两行具有相同的索引值
(2)、主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型
(3)、聚集索引: 表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能由一个
(4)、非聚集索引:非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以是多个,小于249个
3、创建索引
语法:
create [unique] [clustered | nonclustered] index index_name
on table_name (column_name[,column_name]....)
[
fillfactor=x
] unique指定唯一索引,可选
clustered、nonclustered指定是聚集索引还是非聚集索引,可选
fillfactor表示填充因子,指定一个0~100的值,该值指示索引页填满的空间所占的百分比 示例:
use stuDB
go
/*--检测是否存在该索引(索引存放在系统表sysindexes中)--*/
if exists(select name from sysindexes
where name='ix_stumarks_writtenexam')
drop index stumarks.ix_stumarks_writtenexam --删除索引
/*--笔试列创建非聚集索引:填充因子为30%--*/
create nonclustered index ix_stumarks_writtenexam
on stumarks(writtenexam)
with fillfactor=30
go 3、应该创建索引和不应该创建索引
应该创建索引:
经常以这个列进行查询
经常以这个列进行排序
不应该创建索引:
表的数据量小时,不应创建(会先查索引页,然后再表)
当某列的值经常发生变更(修改数据会影响到索引页)
当该列的值比较单一的情况(比如该列的值为性别 男和女)
视图
1、什么是视图
视图是另一种查看数据库中一个或多个表中的数据的方法,视图是一种虚拟表
2、语法
create view view_name
as <select语句>
注意:视图可以对表进行增删改查, 但建议不对其使用增删改,多用来进行查询
sqlserver中 事物 索引及视图的更多相关文章
- SQLServer中使用索引视图
在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你 ...
- sqlserver中的存储过程 函数 事物 索引及视图
存储过程和函数具体的区别: 核心提示:本质上没区别.只是函数有限制只能返回一个标量,而存储过程可以返回多个.并且函数是可以 ...
- SQLServer中使用索引视图(物化视图)
物化视图:以前用的普通的视图,普通视图就是一段逻辑语句,对性能没有任何的提升,也不能创建索引,而物化视图会把视图里查询出来的数据在数据库上建立快照,它和物理表一样,可以创建 索引,主键约束等等,性能会 ...
- SQLSERVER中常用的系统视图
QLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer20 ...
- Sqlserver中的索引
一.什么是索引及索引的优缺点 1.1 索引的基本概念 数据库索引,是数据库管理系统中一个排序的数据结构,用来协助快速查询数据库表中数据. 简单理解索引就是一个排好顺序的目录,设置了索引就意味着进行了 ...
- SqlServer中查看索引的使用情况
--查看数据库索引的使用情况 select db_name(database_id) as N'TOPK_TO_DEV', --库名 object_name(a.object_id) as N'Top ...
- MySql SqlServer Sqlite中关于索引的创建
最近要更新Cocon90.Db库,令其ORM创建表时实现索引的添加.因此总结下列常用Sql,供大家学习与参考. 一.SqlServer中创建索引可以这样: ) Create Table Test ( ...
- SqlServer中Index Seek的匹配规则(一)
我们知道在SqlServer中,索引对查询语句的优化起着巨大的作用,一般来说在执行计划中出现了Index Seek的步骤,我们就认为索引命中了.但是Index Seek中有两个部分是值得我们注意的,我 ...
- SQLServer中在视图上使用索引(转载)
在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你 ...
随机推荐
- Scala的内建控制结构
Scala中的内建控制机构仅有if.while.for.try.match和函数调用.虽然Scala的基础控制结构少,但也足以支持指令式语言里所有的实质内容.因为它们都能产生值,有助于缩短代码. 程序 ...
- 理一下docker在各平台上的运行机制
理一下docker在各平台上的运行机制 首先,从内核共享与否 docker在linux上共享内核,无需虚拟化,完全支持native功能(https://docs.docker.com/engine/i ...
- 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类
1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...
- Ring0 - Lookaside结构
由于频繁的申请,回收内存会导致在内存上产生大量的内存"空洞".这时使用Lookaside. 1.每次申请固定大小的内存. 2.申请和回收的操作十分频繁. 实现原理: 他先向wind ...
- go中defer的理解--defer、return、返回值之间执行顺序
defer可以读取有名返回值 func c() (i int) { defer func() { i++ }() return 1 } 输出结果是2. 在开头的时候,我们知道defer是在return ...
- CDlinux 安装
镜像 CDlinux-0.9.7.1 虚拟机VMware12 1.VMware12中,新建虚拟机 2.典型安装方式 下一步 3.稍后安装操作系统 4.内核版本要选择[其他linux2.6.X内核] 5 ...
- Jmeter(三十一)Jmeter Question 之 乱码解读
众所周知,编码的问题影响着众多开发者,当然见多不怪. 先扒了一个编码的原因,也就是为什么要编码: 计算机中存储信息的最小单元是一个字节即 8 个 bit,所以能表示的字符范围是 0~255 个 人类要 ...
- Ribbon Workbench The plug-in execution failed because the Sandbox Client encountered an error during initialization
使用 Ribbon Workbench打开解决方案时,出现The plug-in execution failed because the Sandbox Client encountered an ...
- react mobx webpack 使用案例
1.package.json: { "name": "wtest", "version": "1.0.0", " ...
- 小朋友学C语言(4):单精度浮点数与双精度浮点数
上节课简单介绍了浮点数.计算机程序中的浮点数分为单精度浮点数和双精度浮点数. 单精度和双精度精确的范围不一样. 计算机里的最基本的存储单位用位(bit)来表示.bit只能用来存储0或1. 稍大一点的单 ...