索引,事务,存储过程

索引整合

事务整合

存储过程整合

1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作为一个整体一起向系提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。

2.事务的语句
开始事物:BEGIN TRANSACTION
提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION

3.事务的4个特性
  ①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,是不可折分的,事务是一个完整的操作。
  ②一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。
  ③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式来影响其他事务。
  ④持久性(Durability):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库

4.事务的分类.
按事务的启动与执行方式,可以将事务分为3类:
  ①显示事务 :也称之为用户定义或用户指定的事务,即可以显式地定义启动和结束的事务。分布式事务属于显示事务
  ②自动提交事务:默认事务管理模式。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。
  ③隐性事务:当连接以此模式进行操作时,sql将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。它生成连续的事务链。

5.实例
BEGIN TRANSACTION--开始事务

DECLARE @errorSun INT --定义错误计数器
SET @errorSun=0 --没错为0

UPDATE a SET id=232 WHERE a=1 --事务操作SQL语句
SET @[email protected][email protected]@ERROR --累计是否有错

UPDATE aa SET id=2 WHERE a=1 --事务操作SQL语句
SET @[email protected][email protected]@ERROR --累计是否有错

IF @errorSun<>0
BEGIN
PRINT ‘有错误,回滚‘
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT ‘成功,提交‘
COMMIT TRANSACTION--事务提交语句
END

6、不能用于事务的操作
创建数据库 create database
修改数据库 alter database
删除数据库 drop database
恢复数据库 restore database
加载数据库 load database
备份日志文件 backup log
恢复日志文件 restore log
更新统计数据 update statitics
授权操作              grant
复制事务日志 dump tran
磁盘初始化           disk init
更新使用sp_configure后的系统配置           reconfigure

存储过程整合

1.什么是存储过程:存储过程是一组为了完成特定功能的sql语句集,经编译后存储在数据库中,存储过程可包含程序流、逻辑以及对数据库的查询。他们可以接受参数、输出参数、返回单个或多个结果集以及返回值

2.存储过程的优势
(1) 能实现模块化程序设计。
(2) 使用存储过程可以提高执行效率。当客户程序需要访问服务器上的数据时,一般要经过5个步骤:
 ● 查询语句被发送到服务器;
 ● 服务器编译T-SQL语句;
 ● 优化产生查询执行计划;
 ● 数据库引擎执行查询;
 ● 执行结果发回客户程序。
如果执行存储在客户端本地的T-SQL程序,那么每次执行该程序时,对于程序中的每一条语句都要经过以上5个步骤。而存储过程在创建时就被编译和优化,当存储过程第一次被执行时,SQL Server为其产生查询计划并将其保存在内存中,这样以后在调用该存储过程时就不必再进行编译,即以上5个步骤中的第2步和第3步就被省略了,这能大大改善系统的性能。 
(3) 减少网络流量。一个需要数百行T-SQL代码的操作,如果将其创建成存储过程,那么使用一条调用存储过程的语句就可完成该操作。这样就可避免在网络上发送数百行代码,从而减少了网络负荷。
(4) 可作为安全机制使用。管理员可以不授予用户访问存储过程中涉及的表的权限,而只授予执行存储过程的权限。用户通过存储过程来访问表,所能进行的操作是有限制的,从而保证了表中数据的安全性。

3.存储过程的类型
(1) 系统存储过程: 在SQL Server中的许多管理工作是通过执行系统存储过程来完成的。

(2) 扩展存储过程: 扩展存储过程是以动态链接库(dll)形式存在的外部程序。

(3) 用户存储过程: 用户存储过程是由用户根据实际问题的需要所创建的存储过程。

4.创建有参数的存储过程:

use pubs
go
create procedure MyPRO
@id varchar(11),
@contract bit,
@phone char(12) output
as
select @phone=phone from authors where [email protected] and [contract][email protected]

--调用存储过程
decla @phone char(12)
exec mypro ‘267-41-2394‘,true,@phone output
print @phone

时间: 2024-10-19 19:52:49

索引,事务,存储过程的相关文章

视图、索引、存储过程

视图——相对应的是表查询结果.表——真正存储数据的地方.视图——不存数据,展示查询的结果. 视图就是为了查询数据方便.一般不要试图向视图中插入数据,容易出错.视图可以由一个表生成,也可以由多个表生成,还可以由表各视图生成新的视图. 掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 索引:为了提高查询效率.簇索引,非簇索引 1.数据的默认存储次序跟簇索引的次序一样的.一个表中只有能有一个簇索引.2.非簇索引是单独放置的,查询的时候,先查非族索引,再跟据

数据库优化--使用索引优化存储过程

http://www.cnblogs.com/chillsrc/archive/2010/06/10/1755639.html 数据库优化--使用索引优化存储过程

SQLserver 数据库的索引,存储过程和触发器的使用与概念

前言:索引,存储过程和触发器可以对一些高级的数据处理和查询,从而更好的实现对数据库的操作,诊断和优化. 一.索引 索引提供指针以指向存储在表中指定的数据值,数据库的索引,就好比一本书中的目录类似,无需阅读整个一本书,利用目录就可以快速的查找所需信息.在数据库中,索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据.通过使用索引,可以大大提高数据库的查询速度 (1) 索引分类 1.唯一索引 唯一索引不允许两行具有相同索引值 2.主键索引 在数据库关系图中为表定义一个主键将自动创建主键索引

函数,事务,索引,存储过程

重点,事务,索引: --常见的安全问题: sql注入:用户输入不合法 通过攻击服务器的安全漏洞窃取数据库 一种常见的方式 在黑市上可以买到数据库信息 装库,利用从别处叨叨的用户名和密码,尝试在另外一个站点上登录,从而得到更多 信息 安全建议: 1.对数据库设计的建议:在表中存储加密后的密码数据,常见加密方式 :md5,sha1 2.对网站程序员的建议:登录时添加验证码 3.对普通用户的建议:在多个站点间使用不同的密码 oauth:授权登录,微信,微博,新浪 函数: ? functions;  查

MSSQL 事务,视图,索引,存储过程,触发器

事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据通信系统.例如:订票.银行.保险公司以及证券交易系统等. 如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库的永久组成部分,如果事务遇到错误且必须取消或回滚,则所有数据修改均会被清除. 开始事务 BEGIN TRANSACTION 提交事务 COMMIT TRANSACTION 回

数据库索引,存储过程,视图,事务

一,索引索引是一个独立的,物理的数据库结构,可以快速找到表或视图的信息通常情况下只有需要经常查询索引列中的数据时才在表上创建索引基本语法:CREATE INDEX StockIndexON appSchema.StockEvents (StockSymbol);创建唯一索引:Create unique index 索引名称On 表名(字段1,字段2)聚集索引:clustered 每个键值只有一个聚集索引非聚集索引noclustered:索引的键值包含指向表中记录存储位置的指针,不对表中数据排序聚

【转】视图、索引、存储过程 、触发器、游标及事务

原文地址:http://www.cnblogs.com/dong897812629/archive/2013/03/27/2981142.html 视图 1.视图不占物理存储空间,它只是一种逻辑对象.可将其看成一个"虚表" 视图是一个由select 语句指定,用以检索数据库表中某些行或列数据的语句存储定义 注:创建视图语句中,不能包括order by.compute或者compute by 子句,也不能出现into关键字 2.创建水平视图 视图的常见用法是限制用户只能够存取表中的某些数

MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

目录 视图*** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysql的默认结束符(;) 触发器死循环 六个触发器的执行时机 新增前.新增后.删除前.删除后.更新前.更新后 NEW对象指代的就是当前记录(对象) 事务 ***** 什么是事务 事务的四大特性 ACID A:原子性 atomicity C:一致性 consistency I:隔离性 isolation D:持

MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化

视图: 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调: (1)在硬盘中,视图只有表结构文件,没有表结构数据 (2)视图通常是用于查询,尽量不要修改视图中的数据 dro

Mysql之视图 触发器 事务 存储过程 函数

视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> se