首页 > 数据库 >第9节-MySQL存储过程

第9节-MySQL存储过程

时间:2022-11-24 23:00:38浏览次数:47  
标签:存储 -- MySQL delimiter SQL 过程 procedure

9.1、存储过程概述

1、存储过程的定义
   定义一段完成特定功能的SQL语句集,经编译后存储在数据库中,用户可以通过指定的存储过程名称并给出参数来执行它,这样的语句集称为存储过程。
2、存储过程的优点
2.1、存储过程是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输,可以利用服务器的计算能力,执行速度快。
2.2、存储过程执行一次后,其执行规划就驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码即可,提高了系统性能。
2.3、存储过程在被创建后,可以在程序中多次调用,而不必重新编写,避免开发人员重复的编写相同的SQL语句
2.4、数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
2.5、存储过程可以用流控制语句编写,可以完成复杂的判断和较复杂的运算。
2.6、确保数据库的安全性和完整性
2.7、系统管理员通过对某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免非授权用户对数据的访问。

9.2、存储过程管理

-- 1、创建存储过程
delimiter $$
create procedure getStudentNames() 
READS SQL DATA
begin
select sname from student limit 5;
end$$
delimiter ;
-- 调用存储过程
call getStudentNames();


-- 2、创建带参数的存储过程
delimiter $$
create procedure findStudent(id varchar(20)) 
READS SQL DATA
begin
select sname from student where sno=id;
end$$
delimiter ;
-- 调用存储过程
call findStudent('95003');


-- 3、创建输入输出参数的存储过程
delimiter $$
create procedure getStudentId(in id varchar(20),out var_name varchar(20)) 
READS SQL DATA
begin
select sname into var_name from student where sno=id;
end$$
delimiter ;
-- 调用存储过程
call getStudentId('95003',@name);
select @name;


-- 4、查看存储过程
show procedure status like '%stu%';
show create procedure getStudentId;


-- 5、修改存储过程
-- 修改权限和加上注释

--- 修改权限字段
CONTAINS SQL:表示子程序包含sQL语句,但不包含读或写数据的语句; 
NO SQL:表示子程序中不包含sQL语句;
READS SQL DATA:表示子程序中包含读数据的语句; 
MODIFIES SQL DATA:表示子程序中包含写数据的语句。
DEFINER:表示只有定义者自己才能执行; 
INVOKER:表示调用者可以执行。
COMMENT 'string'是注释信息。
---

delimiter $$
alter procedure getStudentNames 
READS SQL DATA
comment 'alter procedure'
$$
delimiter ;


-- 6、删除存储过程
drop procedure getStudentNames;

 

标签:存储,--,MySQL,delimiter,SQL,过程,procedure
From: https://www.cnblogs.com/ygbh/p/16923772.html

相关文章

  • 第10节-MySQL数据库的编程基础
     10.1、变量、运算符介绍用户变量:使用@开头。【set定义,会话有效】系统变量:使用@@开头。【declare定义,begin..end有效】局部变量:在存储过程中有效。--1、用户变......
  • 第11节-MySQL存储函数
    11.1、函数介绍1、函数是存储在服务器端的SQL语句的集合2、函数分为MySQL提供的内部函数和用户自定义医数两大类.MySQL提供了很丰富的内部函数·数学函数·字符串医......
  • 广告业务存储神器:华为云GaussDB(for Redis)
    摘要:高性能、大容量、低成本、强稳定性,广告业务需要的Ta都有​一、从需求场景说起,什么是RTA广告业务?​在互联网时代,媒体平台逐渐成为广告业务的主体,而作为广告主的企业往往......
  • 第九章运行存储分配常考大题总结(二)一些题
    题一 解题思路:先画出整体的活动树 (1)题干指出当前执行过程为quicksort(2,3),意为q(5,9)一侧不需要考虑,因为q(1,3)先执行完才能执行q(5,9),本题轮不到q(5,9)main()-......
  • MySQL字段约束条件
    昨日内容回顾MySQL字符编码及配置修改新版MySQL默认字符编码为utf系列,旧版本使用编码不统一,需要自己修改。修改使用配置文件较为简单,复制原配置文件改名为my.ini,文件......
  • MySQL数据库:6、约束的概述及语法
    Python基础之MySQL数据库目录Python基础之MySQL数据库一、约束概述1、为什么要约束2、什么是约束3、约束的分类4、查看当前表已有的约束二、约束语法及用法1、无符号2、......
  • MYSQL索引
    一、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可......
  • day41MySQL基础(3)
    目录无符号、零填充非空默认值唯一值主键自增外键前戏关系的判断一对多关系外键字段的建立多对多关系一对一关系无符号、零填充unsigned idintunsignedzerofill id......
  • 进入python的世界_day38_数据库——mysql约束条件、表关系
    一、字段约束条件1.无负号​ unsignedcreatetablet(idintunsigned);#不能添加负数2.零填充​ zerofillcreatetablet(idintzerofill);#填入得数据展......
  • MySQL之约束条件及表间关系
    MySQL之约束条件MySQL创建表的完整语法中,每个字段名后必须跟随字段类型,还可以选择跟随约束条件。本文将介绍常见的约束条件,首先先创建一个测试约束条件的库:createdatab......