Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql存储过程与函数学习与实践

mysql存储过程与函数学习与实践方式

作者:WalkerShen

下面小编就为大家分享一篇mysql存储过程与函数学习与实践方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

什么是存储过程?

存储过程是一个预编译的SQL语句,

优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。

如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

其实就是跟编程语言一样,编写一个方法,然后可以进行复用的意思,例如可以编写一个根据名字查询学生数据的方法,然后就不需要每次都去写了,使用的时候也方便很多

有哪些优缺点?

优点

缺点

关键语法

声明语句结束符,可以自定义:
DELIMITER $$ 或 DELIMITER //

声明存储过程:
CREATE PROCEDURE demo_in_parameter(IN p_in int)  

存储过程开始和结束符号:
BEGIN .... END    

变量赋值:
SET @p_in=1  

变量定义:
DECLARE l_int int unsigned default 4000000; 

创建mysql存储过程、存储函数:
create procedure 存储过程名(参数)

存储过程体:
create function 存储函数名(参数)

使用案例

创建一个存储过程,可以根据学生的名字去查询学生的数据

1、创建表

CREATE TABLE `student` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `class_id` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、创建存储过程|函数

# 函数定义开头
delimiter $$
# create procedure 函数名(in|out|input 参数名 参数类型)
# 参数类型 如果是varchar的话要表明长度,如果是int的话就不需要
create procedure select_student(in s_name varchar(32))
# begin和end之前写sql语句
begin
	select * from student s
	where s.name=s_name;
end
# 使用$$代表函数结束
$$

3、测试

# 先插入数据
insert into student(id,name,class_id) values(1,"walker","11")

# 设置变量,调用函数
set @s_name="walker";
call select_student(@s_name)

4、查询结果

1    walker    11

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文