SQl 事物+视图+游标+索引+锁
一:事务:
是访问并可能更新数据库中各种数据项的一个程序执行单元(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 事物+视图+游标+索引+锁的更多相关文章
- (4.22)sql server视图/索引视图概念
(4.22)sql server视图 关键词:sql server视图.索引视图 SQL Server视图是由SQL语句组成的逻辑数据库对象.它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含 ...
- SQL知识整理二:锁、游标、索引
锁 锁的模式 锁模式 描述 共享(S) 用于不更改或不更新数据(只读操作),如SELECT语句 更新(U) 用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁 ...
- PL/SQL 编程(三 )程序包和包体,触发器,视图,索引
一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. ...
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
本文出处:http://www.cnblogs.com/wy123/p/6694933.html 第一次通过索引视图优化SQL语句,以及遇到的一些问题,记录一下. 语句分析 最近开发递交过来一个查询统 ...
- 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- SQL数据库—<5>视图、索引…简单学习
视图 掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 视图的定义: 视图可以认为是从一个数据表或者多个数据表中导出的表,视图本身没有任何数据,它是用来存 ...
- sql 事物 锁 快照(转发的,写的非常好)
隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而不会影响写操作申请的互斥锁(Exclusive Lock),隔离级 ...
- SQL Server基础之索引
索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...
- SQL Server 深入解析索引存储(下)
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...
随机推荐
- ubuntu14.04 mysql-workbench Connecting to MySQL server ... Native table 'performance_schema'.'session_variables' has the wrong structure错误解决
使用的mysql版本: mysql Ver 14.14 Distrib 5.7.9, for Linux (x86_64) using EditLine wrapper 打开shell命令 1.输 ...
- Python之turtl库-玫瑰花
Python之turtl库-玫瑰花 #!/usr/bin/env python # coding: utf-8 # Python turtle库官方文档:https://docs.python.org ...
- pandas的合并、连接、去重、替换
import pandas as pd import numpy as np # merge合并 ,类似于Excel中的vlookup df1 = pd.DataFrame({'key': ['K0' ...
- Python xml文件处理
什么是XML文件? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,具体如 ...
- 接口测试工具-fiddler的运用
本篇主要介绍一下fiddler的基本运用,包括查看接口请求方式,状态响应码,如何进行接口测试等 一.Fiddler的优点 独立的可以直接抓http请求 小巧.功能完善 快捷.启动就行 代理方便 二.什 ...
- 《C语言程序设计(第四版)》阅读心得(二)
第六章引用数组处理批量数据 1.数组的定义 :类型符 数组名[常量表达式] 1) 在主函数中定义数组,常量表达式不能包含变量 +]; //合法 int n; int a[n]; //不合法 2)在被 ...
- 扫描局域网内所有主机和MAC地址的Shell脚本
#!/bin/bash #author: InBi #date: 2011-08-16 #website: http://www.itwhy.org/2011/08-20/939.html ##### ...
- Linux Shell常用技巧(八) 系统运行状况
十八. 和系统运行状况相关的Shell命令: 1. Linux的实时监测命令(watch): watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动 ...
- hdu - 2645 find the nearest station (bfs水)
http://acm.hdu.edu.cn/showproblem.php?pid=2645 找出每个点到距离最近的车站的距离. 直接bfs就好. #include <cstdio> #i ...
- 2019.4.1今日一练String类中的方法
package com.pjc.objects; replaceAll()方法的理解引出正则表达式import java.util.regex.Patte ...