Mysql数据库存储

目录

1.创建存储过程

1.1 创建存储过程的语法:

(1)创建存储过程

(2)修改结束符号

 1.2 存储过程体

(1)局部变量

(2)SELECT-INTO 语句

2.显示存储过程

3.调用存储过程

4.删除存储过程


1.1 创建存储过程的语法:

(1)创建存储过程

CREATE PROCEDURE 存储过程名([参数[,...]])存储过程体

语法说明如下。
存储过程名:存储过程的名称默认在当前数据库中创建。需要在特定数据库中创建存储过程时,要在名称前面加上数据库的名称,格式为数据库名.存储过程名。值得注意的是,这个名称应当尽量避免与MySQL的内置丽数名称相同,否则会发生错误。

(2)修改结束符号

我们可以使用EDELIMITER命令将MySQL语句的结束标识修改为其他符号。

语法如下:

DELIMITER $$

语法说明如下。
$$是用户定义的结束符、通常这个符号可以是一些特殊的符号,如两个“#”、两个"¥"等。当使用DELIMITER命令时,应该避免使用反斜杠(\)字符,因为那是MSOL的转字符。

我们还可以将它修改为 &&。

DELIMITER &&;

下面我们用一个例子来表示这段语句:编写一个存储过程,实现功能是删除一个指定用户姓名的用户信息。

DELIMITER &&
CREATE PROCEDURE del_member(IN xm CHAR(8))
BEGINN
       DELETE FROM members where 姓名=xm;
END &&
DELIMITER;

 1.2 存储过程体

(1)局部变量

在存储过程中可以声局部变量,它们可以用来存储临时结果。要声明局部变量,必须使用DECLARE语句。在声明局变量的同时,也可以对其赋一个初始值。

语法如下:

DECLARE 变量[,...]类型[DEFAULT 值]

DEFAULT 子句给变量指定一个默认值,如果不指定,默认为NULL。

例如,声明一个整形变量和两个字符变量。

DECLARE num int(4);
DECLARE str1,str2 varchar(6);

(2)SELECT-INTO 语句

 使用SELECT-INTO语句可以把选定在列表直接存储到变量中,但返回在结果只有一行。

语法如下:

SELECT 列名[,...]INTO 变量名[,..] 数据来源表达式

语法说明如下:

列名[,...]变量名:将选定的列值赋给变量名。

数据来源表达式:SELECT语句中在FROM子句及后面的部分。 

2.显示存储过程

想要查看里面有哪些存储过程,可以使用SHOW PROCEDURE STATUS 语句。

SHOW RPOCEDURE STATUS;

想要查看存储过程的具体信息,可以使用SHOW CREATE PROCEDURE 存储过程名语句。

SHOW CREATE PROCEDURE 存储过程名;

 下面我们用一个例子来表示这段语句:查看刚刚创建的存储过程del_member的语句。

SHOW CREATE PROCEDURE del_member;

3.调用存储过程

当我们创建完存储过程便可以使用调用语句来实现我们想要的数据。

语法如下:

CALL 存储过程名(参数[,...])

例如:调用del_member存储过程,删除"张三"的用户信息。

CALL del_member('张三');

例子:创建存储过程,实现査询 members 表中会员人数的功能,并执行它。

首先创建查询 members 表中会员人数的存储过程。 

CREATE PROCEDURE query_members()
SELECT COUNT(*) FROM members;

 这是一个不带参数的非常简单的存储过程,通常SELECT语句不会被直接用在存储过程中。
调用该存储过程。

CALL query_members();

例:创建一个存储过程,输入成绩,返回等级。

DELIMITER SS
CREATE PROCEDURE quarter(IN mon int,out name varchar(20))
BEGIN
    CASE
    WHEN mon in(1,2,3) THEN SET name ='春';
    WHEN mon in(4,5,6) THEN SET name ='夏';
    WHEN mon in(7,8,9) THEN SET name ='秋';
    WHEN mon in(10,11,12) THEN SET name '冬';
    ELSE SET name='输入错误';
    END CASE;
END SS
DELIMITER;

调用该存储过程。

CALL quarter(7);

4.删除存储过程

存储过程创建后,需要删除使使用DROP PROECDURE语句。删除前还要确认改存储过程没有任何依赖关系,否则可能会导致其他与之关联的存储过程无法运行。

语法如下:

DROP PROCEDURE [IF EXISTS] 存储过程名

语法说明如下:

存储过程名:要删除的存储过程的名称。 

IF EXISTS子句:是MySQL的扩展,如果程序或函数不存在,则改子句可以防止发生错误。

例如:删除存储过程del_member,使用语句如下。

DROP PROCEDURE IF EXISTS del_members;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值