仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1064|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:存储历程概述

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysql的原来开发者又开发了MariaDB,MariaDB适合用来替代mysql吗在年夜型数据库体系中,存储历程和触发用具有很主要的感化。不管是存储历程仍是触发器,都是SQL语句和流程把持语句的汇合。就
实质而言,触发器也是一种存储历程。存储历程在运算时天生实行体例,以是,今后对其再运转时其实行速率很快。SQLServer2000不但供应了用户自界说存储历程的功效,并且也供应了很多可作为工具利用的体系存储历程。

12.1.1存储历程的观点
存储历程(StoredProcedure)是一组为了完成特定功效的SQL语句集,经编译后存储在数据库。顶用户经由过程指定存储历程的名字并给出参数(假如该存储历程带有参数)来实行它。

在SQLServer的系列版本中存储历程分为两类:体系供应的存储历程和用户自界说存储历程。体系历程次要存储在master数据库中并以sp_为前缀,而且体系存储历程次要是从体系表中猎取信息,从而为体系办理员办理SQLServer供应撑持。经由过程体系存储历程,MSSQLServer中的很多办理性或信息性的举动(如懂得数据库工具、数据库信息)都能够被顺遂无效地完成。只管这些体系存储历程被放在master数据库中,可是仍能够在别的数据库中对其举行挪用,在挪用时不用在存储历程名前加上数据库名。并且当创立一个新数据库时,一些体系存储历程会在新数据库中被主动创立。用户自界说存储历程是由用户创立并能完成某一特定功效(如查询用户所需数据信息)的存储历程。在本章中所触及到的存储历程次要是指用户自界说存储历程。

12.1.2存储历程的长处
当使用MSSQLServer创立一个使用程序时,Transaction-SQL是一种次要的编程言语。若使用Transaction-SQL来举行编程,有两种办法。其一是,在当地存储Transaction-SQL程序,并创立使用程序向SQLServer发送死令来对了局举行处置。其二是,能够把部分用Transaction-SQL编写的程序作为存储历程存储在SQLServer中,并创立使用程序来挪用存储历程,对数据了局举行处置存储历程可以经由过程吸收参数向挪用者前往了局集,了局集的格局由挪用者断定;前往形态值给挪用者,指明挪用是乐成或是失利;包含针对数据库的操纵语句,而且能够在一个存储过程当中挪用另外一存储历程。

我们一般更偏幸于利用第二种办法,即在SQLServer中利用存储历程而不是在客户盘算机上挪用Transaction-SQL编写的一段程序,缘故原由在于存储历程具有以下长处:

(1)存储历程同意尺度组件式编程
存储历程在被创立今后能够在程序中被屡次挪用,而不用从头编写该存储历程的SQL语句。并且数据库专业职员可随时对存储历程举行修正,但对使用程序源代码毫无影响(由于使用程序源代码只包括存储历程的挪用语句),从而极年夜地进步了程序的可移植性。

(2)存储历程可以完成较快的实行速率
假如某一操纵包括大批的Transaction-SQL代码或分离被屡次实行,那末存储历程要比批处置的实行速率快良多。由于存储历程是预编译的,在初次运转一个存储历程时,查询优化器对其举行剖析、优化,并给出终极被存在体系表中的实行企图。而批处置的Transaction-SQL语句在每次运转时都要举行编译和优化,因而速率绝对要慢一些。

(3)存储历程可以削减收集流量
关于统一个针对数据数据库工具的操纵(如查询、修正),假如这一操纵所触及到的Transaction-SQL语句被构造成一存储历程,那末当在客户盘算机上挪用该存储历程时,收集中传送的只是该挪用语句,不然将是多条SQL语句,从而年夜年夜增添了收集流量,下降收集负载。

(4)存储历程可被作为一种平安机制来充实使用
体系办理员经由过程对实行某一存储历程的权限举行限定,从而可以完成对响应的数据会见权限的限定,制止非受权用户对数据的会见,包管数据的平安。(我们将在14章“SQLServer的用户和平安性办理”中对存储历程的这一使用作更加明晰的先容)

注重:存储历程固然既有参数又有前往值,可是它与函数分歧。存储历程的前往值只是指明实行是不是乐成,而且它不克不及像函数那样被间接挪用,也就是在挪用存储历程时,在存储历程名字前必定要有EXEC保存字(怎样实行存储历程见本章下一字)。
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 08:41:02 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
莫相离 该用户已被删除
板凳
发表于 2015-1-27 15:43:28 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-5 11:30:05 | 只看该作者
入门没那么困难,精通没那么容易
若天明 该用户已被删除
5#
发表于 2015-2-11 14:30:11 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
精灵巫婆 该用户已被删除
6#
发表于 2015-3-2 14:59:01 | 只看该作者
发几份SQL课件,以飨阅者
蒙在股里 该用户已被删除
7#
发表于 2015-3-11 04:19:47 | 只看该作者
也可谈一下你是怎么优化存储过程的?
爱飞 该用户已被删除
8#
发表于 2015-3-17 20:53:28 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
兰色精灵 该用户已被删除
9#
发表于 2015-3-25 02:34:34 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表