数据库技术与应用 第四章 MYSQL触发器与存储过程 本章主要内容 4.1 存储过程和函数 存储程序和函数是事先经过编译并存储在数据库中的一套SQL语句。创建后,客户端不需要再重新发布单独的语句,而是可以引用存储程序来替。存储程序可以提供改良后的性能,因为只有较少的信息需要在服务器和客户算之间传送,代价是增加数据库服务器系统的负荷。存储程序也允许你在数据库服务器上有函数库,从而提高了开发人员的开发效率。 以下情况存储程序尤其有用: 当用不同语言编写多客户应用程序,或多客户应用程序在不同平台上运行且需要执行相同的数据库操作之时。 安全极为重要之时。比如,银行对所有普通操作使用存储程序。程序可以确保每一个操作都被妥善记入日志。应用程序和用户不可能直接访问数据库表,但是仅可以执行指定的存储程序。 4.1.1 创建与修改存储过程或函数 存储过程示例1—返回单个数据 mysql> delimiter $$ mysql> CREATE PROCEDURE qq_count (OUT num INT) -> BEGIN -> SELECT COUNT(*) INTO num FROM qq; -> END; -> $$ mysql> delimiter ; mysql> CALL qq_count(@a); mysql> SELECT @a; 4.1.1 创建与修改存储过程或函数 存储函数的创建示例 mysql> delimiter $$ mysql> CREATE FUNCTION id_email(id int) RETURNS varchar(20) Reads SQL data -> BEGIN -> declare email varchar(20); -> SELECT email INTO email FROM qq where tid=id; -> RETURN email; -> END; -> $$ mysql> delimiter ; mysql> CALL id_email(1); mysql> SELECT id_email(1); 存储过程或函数基本语法 存储过程或函数说明 存储子程序的权限问题。 创建存储子程序需要CREATE ROUTINE权限。 修改或移除存储子程序需要ALTER ROUTINE权限。这个权限自动授予子程序的创建者。 执行子程序需要EXECUTE权限。然而,这个权限自动授予子程序的创建者。 RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。 存储过程或函数说明 子程序与当前数据库关联。要明确地把子程序与给定数据库关联起来,在创建子程序时指定其名字为db_name.sp_name。 当一个子程序被调用时,一个隐含的USE db_name 被执行(当子程序终止时停止执行)。存储子程序内的USE语句时不允许的。 你可以使用数据库名限定子程序名。这可以被用来引用一个不在当前数据库中的子程序。比如,要引用一个与test数据库关联的存储程序p或函数f,你可以说CALL test.p()或test.f()。 数据库移除的时候,与它关联的所有存储子程序也都被移除。 存储过程或函数说明 参数说明: 由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。 每个参数默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词 OUT或INOUT 指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。FUNCTION参数总是被认为是IN参数 存储过程或函数说明 Characteristic特性说明: CONTAINS SQL表示子程序不包含读或写数据的语句。NO SQL表示子程序不包含SQL语句。READS SQL DATA表示子程序包含读数据的语句,但不包含写数据的语句。MODIFIES SQL DATA表示子程序包含写数据的语句。如果这些特征没有明确给定,默认的是CONTAINS SQL。 SQL SECURITY特征可以用来指定子程序该用创建子程序者的许可来执行,还是使用调用者的许可来执行。默认值是DEFINER。 COMMENT子句是一个MySQL的扩展,它可以被用来描述存储程序。这个信息被SHOW CREATE ROCEDURE和 SHOW CREATE FUNCTION语句来显示。 存储过程或函数说明 过程体说明: MySQL允许子程序包含DDL语句,如CREATE和DROP。MySQL也允许存储程序(但不是存储函数)包含SQL 交互select

mysql 触发器 exit_MYSQL触发器和存储过程.ppt相关推荐

  1. mysql七:视图、触发器、事务、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  2. mysql:视图,触发器,事务,存储过程,函数

    一.视图 视图是一个虚拟表并不是(正实存在的) 创建老师表create table teacher( id int primary key auto_increment, tname varchar( ...

  3. MySQL之视图、触发器、事务、存储过程

    http://www.cnblogs.com/linhaifeng/articles/7495918.html 视图 ​ 试图就是一个虚拟表(非真实存在),本质就是[根据sql语句获取动态的数据集,并 ...

  4. mysql事务变量_mysql学习四之事务、变量、触发器、函数、存储过程

    需求:有一张银行账户表,有A用户给B用户转账:A账户先减少,B账户增加,但是A操作完之后断电了. 解决方案:A减少钱,但是不要立即修改数据表:B收到钱之后,同时修改数据表 事务安全 事务:transa ...

  5. mysql查看所有触发器以及存储过程等操作集合

    1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND  TAB ...

  6. MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能...

    一.索引,分页性能,执行计划,慢日志 (1)索引的种类,创建语句,名词补充(最左前缀匹配,覆盖索引,索引合并,局部索引等): import sys # http://www.cnblogs.com/w ...

  7. MySql—视图、函数、存储过程、触发器

    MySql高级-视图.函数.存储过程.触发器 目录 一.视图    1 1.视图的定义    1 2.视图的作用    1 (1)可以简化查询.    1 (2)可以进行权限控制,    3 3.查询 ...

  8. MySQL函数、视图、存储过程及触发器

    前言 MySQL在我们工作中都会用到,那么我们最常接触的就是增删改查,而对于增删改查来说,我们更多的是查询.但是面试中,面试官又不会问你什么查询是怎么写的,都是问一些索引啊,事务啊, 底层结构这些东西 ...

  9. 什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

    什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么? 存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名 ...

最新文章

  1. python作图一览
  2. 中国阻燃纤维板市场运行局势分析与产销需求前景展望报告2022年
  3. 探测器反向偏压_科学网—《涨知识啦22》---MSM型光电探测器 - 寇建权的博文
  4. 设计师交流分享社区|灵感并非凭空得来,积累在集设网
  5. Win-MASM64汇编语言-CALL/RET/RETF指令
  6. 想法越多越贫穷,赚钱的人,都是少想多干
  7. LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节
  8. 用欧拉角表示旋转(方位)heading pitch bank 含义,形象的图示
  9. thinkpad电源管理解决办法 win2019
  10. UE5 预览版载具模板工程车不能移动的问题
  11. 测试网速和网站加载的速度 - Speedtest by Ookla
  12. 【华为云-IP资源冻结机制】华为云安全事故冻结服务器IP近1小时【50分钟系统全线不可用】
  13. 张口就来!查看docker镜像地址
  14. macOS配置MAVEN环境变量执行source .bash_profile报错.bash_profile: not valid in this context: /xxx/xxx
  15. java中的notify和notifyAll有什么区别?
  16. 计算机操作系统的阶段分为几个阶段,浅谈操作系统的发展历程
  17. arm linux驱动 知乎_学习linux驱动开发的方法?
  18. C语言if和汇编jcc程序对比,汇编 JCC指令表与笔记
  19. 04-Linux之Linux软件安装、三剑客和Shell编程
  20. springboot角色权限后台管理系统脚手架实战开发教程包含完整源码

热门文章

  1. 4500内台式计算机选购,4500左右台式机买什么好
  2. 远程桌面正在加密远程连接很久很慢连接不上解决方法
  3. Android中Paint画图(线、虚线、矩形、多边形、圆形、曲线、半圆、三角形、旋转文字)
  4. python Django在线计算器
  5. java实现读取txt文件和将内容写入txt文件
  6. P52基因序列统计分析
  7. 一个图书编辑在南美逛书展(下)
  8. 华为php工程师面试题,7个华为关于C语言的经典面试题(分享)
  9. mysql五日均线_原来5日均线是这样用的,你用对了吗?
  10. 一个普通前端程序员走过的路程