适合入门的MySQL的基本操作第三期——存储过程篇

由于本人的水平有限,可能会有一些遗漏,希望大家能够进行补充。

存储过程

在目前位置我们所作的大多数SQL语句都是针对一个表或多个表进行操作,但是在实际的工作环境中SQL语句的操作并不会那么简单,经常在执行一个操作时需要执行多个SQL语句,处理多个表来进行完成。而存储过程正是解决这些问题的。下面先介绍以下存储过程。

存储过程是一组为了完成特定功能的SQL语句集。使用存储过程的目的就是将一些复杂的数据操作或常用的操作先写好并用一个指定的名称存储起来(有点类似于一个函数方法),这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。通常情况下使用存储过程有以下几个优点:

1.高性能

当存储过程被成功编译后,就存储在数据库服务器里了,以后客户端可以直接调用,也就是说,SQL语句的执行都是在服务器端执行的,因此这也就大大提高了性能。

2.减少网络通信流量

有于建立的存储过程是在服务器端进行运行的,因此当客户端调用存储过程时至于要输入语句,而不用进行存储过程的运行,因此降低的网络负载。

3.提高数据库的安全性和数据的完整性

我们在使用存储过程时通常只会调用其方法接口,并不会直接对数据库的数据进行操作,因此这在一定上提高了数据库的安全性和数据的完整性。

注:存储过程是从MySQL 从 5.0 版本开始支持的,MySQL 5.0 版本以前并不支持存储过程。

1 创建存储过程

语法:CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式: [ IN | OUT | INOUT ] <参数名> <类型>

或:CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END

IN:使用改关键字的参数可作为输入参数

OUT:使用改关键字的参数可作为输出参数

INOUT:使用改关键字的参数即可作为输出参数,也可作为输入参数

例1:无参的存储过程,查询表“teacher”的内容的存储过程

# DELIMITER $   定义新的语句分隔符为"$"
# 默认的MySQL语句分隔符为分号";"。Mysql命令行实用程序也是";"作为语句分隔符。如果命令行实用程序要解释# 存储过程自身的";"字符,则他们最终不会成为存储过程的成分,这会使存储过程中的SQL出现句法错误
DELIMITER $
CREATE PROCEDURE GetTeacherInfo()
BEGIN
SELECT * FROM teacher;
END $
# 使用存储过程
DELIMITER $
CALL GetTeacherInfo()$

例2:在存储过程中使用输入参数,创建名为”GetStuInfoById“的存储过程,返回指定学号的学生的基本信息

DELIMITER $
CREATE PROCEDURE GetStuInfoById(IN id CHAR(10))
BEGIN
SELECT * FROM student WHERE studentID = id;
END $
# 使用存储过程
DELIMITER $
CALL GetStuInfoById('1')$

例3:在存储过程中使用输出参数,创建名为”GetStuNameById“的存储过程,根据输入参数的值返回对应学生的姓名

DELIMITER $
CREATE PROCEDURE GetStuNameById(IN ID CHAR(10),OUT NAME VARCHAR(10))
BEGIN
SELECT NAME = studentName FROM student WHERE studentID = ID;
END $
# 调用
CALL GetStuNameById('1',@aName)
SELECT @aName 

2 查看存储过程的定义

语法:SHOW CREATE PROCEDURE 存储过程名;

例1:查看GetStuNameById的定义

SHOW CREATE PROCEDURE GetStuNameById;

在这里插入图片描述

3 删除存储过程

语法:DROP { PROCEDURE | FUNCTION } [ IF EXISTS ] <过程名>

例1:删除存储过程GetTeacherInfo

DELIMITER ;
DROP PROCEDURE GetTeacherInfo;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fly狮子座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值