文档章节

mysql存储过程入门与提高(第一篇)

落叶刀
 落叶刀
发布于 2015/09/23 06:31
字数 1137
阅读 138
收藏 6

以前在网上看到歪国人专门写了本mysql存储过程,感觉很强大啊。

MySQL stored programs包括存储过程,函数,触发器。

主要有三种类型的数据库存储程序

存储过程
存储过程是最常见的存储程序,存储过程是能够接受数个输入和输出参数并且能够在请求时被执行的程序单元。
存储函数
存储函数和存储过程很相像,但是它的执行结果会返回一个值。最重要的是存储函数可以被用来充当标准的SQL语句,允许程序员有效的扩展SQL语言的能力
触发器
触发器是用来响应激活或者数据库行为,事件的存储程序,通常,触发器用来作为DML(数据库操纵语言)的响应而被调用,触发器可以被用来作为数据校验和自动反向格式化。

 先来看一下官方的定义。
Stored procedures 存储过程
Stored procedures are the most common type of stored program. A stored proce-
dure is a generic program unit that is executed on request and that can accept
multiple input and output parameters.
Stored functions  函数
Stored functions are similar to stored procedures, but their execution results in
the return of a single value. Most importantly, a stored function can be used
within a standard SQL statement, allowing the programmer to effectively extend
the capabilities of the SQL language.
Triggers触发器。
Triggers are stored programs that are activated in response to, or are triggered
by, an activity within the database. Typically, a trigger will be invoked in
response to a DML operation (INSERT, UPDATE, DELETE) against a database table.
Triggers can be used for data validation or for the automation of denormalization.

大概说一下。

存储过程:存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 可以在单个存储过程中

自定义函数:存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程和函数的区别:   

    1.  一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
    2.  对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
    3.  存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象。

存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。(这就是为啥用存储过程的原因)

触发器:触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;出于性能和数据安全的原因,项目中基本没有用过触发器。

  mysql查看库中所有的存储过程,函数,触发器:

select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'  

也可 “show procedure status; //存储过程”

select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION'   //函数

也可 show function status;     //函数

存储过程,对INFORMATION_SCHEMA数据库中的TRIGGERS表查询

mysql>SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G

SHOW TRIGGERS [FROM db_name] [LIKE expr]

SHOW TRIGGERS\G     //触发器


© 著作权归作者所有

落叶刀
粉丝 41
博文 127
码字总数 108317
作品 2
浦东
运维
私信 提问
Laravel5.2之Redis保存页面浏览量

说明:本文主要讲述使用Redis作为缓存加快页面访问速度。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。 备注:最近在学习github上别人的源码时,发现好多在计算一篇博客页面访...

botkenni
2016/10/21
16
0
创建带 IN 和 OUT 参数的 MySQL 存储过程

在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制 MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做...

oschina
2013/03/12
11.2K
7
mysql存储过程入门与提高(第四篇)

万源之源之Hello World 几乎每种程序语言的开场白都是这样的。。。。。。 系统环境kali+mysql5.5 别问我为啥不用mysl 5.6的最新版,我只想说不当小白鼠。线上环境好多目前主流应该还都是5.5...

落叶刀
2015/09/24
215
0
MySQL数据库新特性之存储过程入门教程

MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力。在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户...

vga
2014/07/21
0
0
「mysql优化专题」本专题总结终章(13)

一个月过去了,【mysql优化专题】围绕着mysql优化进行了十三篇的优化文章,下面进行一次完整的总结!我尝试用最简短最通俗易懂的话阐述明白每篇文章,让本专题画上完美的句号!坚持到文末,留...

java进阶架构师
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部