一:事务:

是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务是恢复和并发控制的基本单位。

事务的四个特性:ACID

A:atomicity 原子性,事务里的所有操作都是一体的,要么一起完成,要么就都不执行,不可能出现执行一半的情况。

C:consistency 一致性,保证数据的一致

I:isolation 隔离性,事务的执行不被干扰,也就是说事务在执行的过程中不可以对其中的数据进行其它操作,等事务完成之后才可以操作。

D:durability 持久性,执行的时候会有记录,如果突然断电,重新通电时返回重新开始执行事务

begin transaction  --开始事务
commit transaction  --提交事务
rollback  --回滚事务

@@error --错误提醒,程序无错的时候返回0,出错返回出错的值

一种事务的用法是用if语句判断@@error的值是否不等于0,来进行回滚操作:

if @@ERROR <>0 --判断是否出错
begin
rollback  --出错回滚
end
else 
begin
commit  --没错提交
end

另一种用法是用try和catch,try是开始执行程序体,没问题的话commit提交,程序出错则直接被catch抓住,回滚。

begin try
 --程序体
 commit
end try
begin catch  --抓错
 rollback
end catch

二:索引,索引是为了提高查找的效率

建索引的步骤:

在表的设计界面,右键选择索引/键

在出来的界面上点添加,然后选出哪一列作为索引就建立起了一个索引

三:视图

视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。

所以视图不是真实存在的基础表,而是一张虚表视图,所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。通过视图看到的数据只是存放在基本表中的数据。

视图的优点:

1.视点集中
视图集中即是使用户只关心它感兴趣的某些特定数据和他们所负责的特定任务
2.简化操作
若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。
3.合并分割数据
表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。
4.安全性
通过视图用户只能查看和修改他们所能看到的数据,其它数据库或表既不可见也不可以访问。

--创建一个视图,在chinastates表中查询出省份是shandong的城市

create view shandong
as
select *from ChinaStates where parentareacode='37'
go
--显示视图

之后每次要查询shandong的城市时直接调用视图就可以,不用每次都写代码,比较简便。
select *from shandong

--删除视图
drop view

四:游标

关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式。

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制,用游标的时候一般是伴随着while来用的,游标用的比较少,因为会降低数据库的效率。

这里定义了一个游标,利用while和next来查询奥迪A4 07款 上一个和下一个

declare cur_car cursor scroll  --定义游标,scroll是让游标可以来回滚动
for select name from car where name like '奥迪%'
open cur_car --开启游标
fetch first from cur_car  --让游标回到第一个
while @@FETCH_STATUS =0  --@@fetch_status是全局变量返回上次执行FETCH 命令的状态,0   FETCH 命令被成功执行
-1   FETCH 命令失败或者行数据超   过游标数据结果集的范围
-2   所读取的数据已经不存在
begin
 declare @name varchar(20)
 fetch next from cur_car into @name
 
 if LEFT(@name,LEN('奥迪A4 07款'))='奥迪A4 07款'
 begin
  fetch prior from cur_car into @name
  print @name
  fetch relative 2 from cur_car into @name
  print @name
 end
end
close cur_car

五:锁

锁分为悲观锁和乐观锁

悲观锁:它指的是对数据被外界(包括本系统当前的其他事务,以及来自 外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态,事务就是悲观锁,在事务执行的时候,数据不可查不可更改。

乐观锁:相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制,在更改数据的时候可以进行查询操作,在更改完成的瞬间往数据库里放的时候才进行加锁,锁的时间较短,这种机制的锁谨慎使用。

SQl 事物+视图+游标+索引+锁的更多相关文章

  1. (4.22)sql server视图/索引视图概念

    (4.22)sql server视图 关键词:sql server视图.索引视图 SQL Server视图是由SQL语句组成的逻辑数据库对象.它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含 ...

  2. SQL知识整理二:锁、游标、索引

    锁 锁的模式 锁模式 描述 共享(S) 用于不更改或不更新数据(只读操作),如SELECT语句 更新(U) 用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁 ...

  3. PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

    一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. ...

  4. SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示

    本文出处:http://www.cnblogs.com/wy123/p/6694933.html 第一次通过索引视图优化SQL语句,以及遇到的一些问题,记录一下. 语句分析 最近开发递交过来一个查询统 ...

  5. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  6. SQL数据库—<5>视图、索引…简单学习

    视图 掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 视图的定义: 视图可以认为是从一个数据表或者多个数据表中导出的表,视图本身没有任何数据,它是用来存 ...

  7. sql 事物 锁 快照(转发的,写的非常好)

    隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而不会影响写操作申请的互斥锁(Exclusive Lock),隔离级 ...

  8. SQL Server基础之索引

     索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...

  9. SQL Server 深入解析索引存储(下)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

随机推荐

  1. 集训第六周 数学概念与方法 数论 筛素数 H题

    Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“ ...

  2. Python实现图片切割

    import os from PIL import Image def splitimage(src, rownum, colnum, dstpath): img = Image.open(src) ...

  3. flash-热风焊盘的制作

    计算部分: 热风焊盘的内径(ID)等于钻孔直径+20mil, 外径(OD)等于Anti-pad的直径,通常是比焊盘的直径大20mil. 开口宽度等于(OD-ID)/2+10mil,保留整数位. 如果焊 ...

  4. 多光源 MultipleLight

    使用2个Pass增加光照效果: 第一个Pass是基础光源,一般是第一个平行光:Tags{"LightMode" = "ForwardBase"} 第二个光源是增 ...

  5. Mvc Action可以通过jsonp方式调取

    jsonp其实是一种特殊的数据获取格式,所以在Aicton直接调取的时候肯定会出现问题,下面代码是对于jsonp调取做的处理 protected virtual ActionResult Create ...

  6. CEO的作用

    看到有人讨论CEO的作用. 一个观点认为CEO有三大任务: 1)为公司确定战略,并与股东沟通 2)为公司其他职位找来合适的人员 3)保证公司随时有足够的钱 他认为,可能CEO会有其他的作用,但是这三点 ...

  7. 【(待重做)树状数组+dp+离散化】Counting Sequences

    https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/G [题意] 给定一个数组a,问这个数组有多少个子序列,满足子序列中任意两个相邻数 ...

  8. bzoj 4991 [Usaco2017 Feb]Why Did the Cow Cross the Road III(cdq分治,树状数组)

    题目描述 Farmer John is continuing to ponder the issue of cows crossing the road through his farm, intro ...

  9. restful(3):认证、权限、频率 & 解析器、路由控制、分页、渲染器、版本

    models.py中: class UserInfo(models.Model): name = models.CharField(max_length=32) psw = models.CharFi ...

  10. 在子线程中更新UI,只能使用Handler

    package com.pingyijinren.test; import android.os.Handler; import android.os.Message; import android. ...