MYSQL学习之路——存储过程和函数

通过本章学习,您将可以:

  • 什么是存储过程和函数
  • 使用存储过程和函数的好处
  • 创建存储过程和函数
  • 修改存储过程和函数
  • 调用存储过程和函数
  • 查看存储过程和函数

存储过程和函数:事先经过编译并存储在数据库中的一段sql语句的集合

  • 创建存储过程或函数
CREATE PROCEDURE 存储过程名/函数名
BEGIN 
...
END
  • 调用存储过程或函数
CALL 存储过程名
SELECT 函数名
  • 修改存储过程或函数
ALTER PROCEDURE 存储过程名

ALTER FUNCTION 函数名
  • 删除存储过程或函数
DROP PROCEDURE [IF EXISTS]    存储过程名

DROP FUNCTION [IF EXISTS]    函数名
  • 查看存储过程或函数
SHOW{PROCEDURE|FUNCTION} STATUS LIKE 存储过程或函数名

SHOW CREATE{PROCEDURE|FUNCTION} 存储过程或函数名

SELECT * FROM ROUNTINES WHERE rounine_name = 存储过程名|函数名

#插入到boys表中五条记录

delimiter $
CREATE PROCEDURE myp1 ( ) BEGIN
INSERT INTO boys
VALUES
	( 5, '3SA', 100 ),
	( 6, '3SAA', 100 ),
	( 7, '3SAAA', 100 ),
	( 8, '3SAAAA', 100 ),
	( 9, '3SAAAAA', 100 );

END $ 
CALL myp1 ( ) $

执行结果如下:

#创建存储过程实现根据女神名,查询对应的男神信息

delimiter $
CREATE PROCEDURE myp2(in name varchar(10))
begin 
	select bo.*
	from beauty b
	left join boys bo
	on b.boyfriend_id=bo.id
	where b.name = name;
end$
call myp2('王语嫣')$

#全局变量
#set @变量名 =值;
#set @变量名 : =值;
#局部变量 仅仅只能用于begin and 里,而且只能放在第一行
#declare 变量名 default 值
#set 变量名 = 值

#声明两个变量并赋初始值,求和,并打印
set @m = 100;
set @n := 50;
select @m+@n;
declare a int DEFAULT 10;/*运行不成功,只能放在begin and里面*/

#创建存储过程,实现用户是否登陆成功(全局变量法)

CREATE PROCEDURE myp3(in username VARCHAR(10),in password VARCHAR(10))
BEGIN
	set @a := 0;
	SELECT count(1) into @a
	from users u
	where u.username = username
	and u.password=password;
	SELECT if(@a>0,'登陆成功','登陆失败');
END$
call myp3('aaa','111')$

执行结果如下:

#局部变量法

delimiter $
CREATE PROCEDURE myp4(in username VARCHAR(10),in password VARCHAR(10))
BEGIN
	DECLARE a int;
	SELECT count(1) into a
	from users u
	where u.username = username
	and u.password=password;
	SELECT if(a>0,'登陆成功','登陆失败');
END$
call myp4('aaa','111')$

执行结果如下:

#创建带inout模式参数的存储过程
#传入a和b两个值,最终a和b都翻倍并返回

delimiter $
CREATE PROCEDURE myp6 ( INOUT a INT, INOUT b INT ) BEGIN

SET a = a * 2;

SET b = b * 2;

END $ 
SET @a = 100 $ 
SET @b = 50 $ CALL myp6 ( @a, @b ) $

猜你喜欢

转载自blog.csdn.net/CSDN_XUWENHAO/article/details/88902620
今日推荐