数据库存储过程
记得在上一次的面试中,面试官问我什么是数据库的存储过程,我当时真的头脑一发热什么都不知道压根没有听过这个问题,我当时在想数据库还有存储过程吗?
其实数据库的存储过程类似java中的方法。就是把一些语句,逻辑封装到方法中用到的时候我们去调用就可以了。
好处:
1.提高了代码的重用性
2.简化操作
存储过程的含义:
一组预先编译好的sql语句集合,也可以理解成批处理语句,但是存储过程要比批处理要强大得多。
好处就是:减少了编译次数,减少了和数据库的连接次数,从而提高了效率。
1.空参列表
向admin表中插入2条记录
语法:
delimiter $ (设置结束标记)
create procedure myp1()
begin
insert into admin (字段,字段..)vaules (值,值...)
end $
调用
call myp1() $
2.带in类型参数存储过程
案例1:创建存储过程实现 根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
CALL myp2('柳岩')$
3.创建out 模式参数的存储过程
案例1:根据输入的女神名,返回对应的男神名
CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyname INTO boyname
FROM boys bo
RIGHT JOIN
beauty b ON b.boyfriend_id = bo.id
WHERE b.name=beautyName ;
END $
#调用
CALL myp7('小昭',@name,@cp)$
SELECT @name,@cp$
4.创建带inout模式参数的存储过程
案例
1:传入a和b两个值,最终a和b都翻倍并返回
CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
#调用
SET @m=10$
SET @n=20$
CALL myp8(@m,@n)$
SELECT @m,@n$
5.、删除存储过程
语法:drop procedure 存储过程名
DROP PROCEDURE p1;
DROP PROCEDURE p2,p3;#×
6、查看存储过程的信息
DESC myp2;×
SHOW CREATE PROCEDURE myp2;