mysql数据库存储过程学习_mysql数据库存储过程学习

1、建立存储过程方式一:

mysql中存储过程属于函数一栏中,点击新建函数会有让你选择是存储过程还是函数

f2600f4893cb1d8cc8a8cee6cfe6aaf1.png

接下来是存储过程中设置的参数:

IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT 输出参数:该值可在存储过程内部被改变,并可返回

INOUT 输入输出参数:调用时指定,并且可被改变和返回

spacer.gif

接下来就在BEGIN和END中填写需要的sql语句,和平时使用的相同

c0ca5d52dcdfded6ee1dc3dbcacb4407.png

保存后存储在函数下,执行时可以直接运行,查看结果。

注:当没有参数或者只有IN输入参数时,可以直接在存储过程中进行运行查看结果,否则可以通过写查询语句,进行查询,例如:

spacer.gif

方式二:还可以直接在查询中写存储过程,并执行。

2、存储过程的简单实例

(1)IN的使用

BEGIN

#Routine body goes here...

select * from book WHERE studentid=stuid;

set stuid=2;

select * from book WHERE id=stuid;

END

BEGIN与END中可以写多个sql语句,对应多个运行结果。

spacer.gif

结果二:

spacer.gif

即使参数值被修改,也不影响输出的结果。

(2)OUT的使用

存储过程:

BEGIN

#Routine body goes here...

SELECT bookName,max(id) from book WHERE book.studentid=stuid GROUP BY bookname ORDER BY id DESC;

SET max=1;

SELECT max;

END

执行语句:

SET @max=0,@stuid=1;

CALL outtest(@max,@stuid)

参数:OUT `max` int,IN `stuid` int

因为max为输出参数,只能输出,所以如果max不在存储过程中进行复制的话,会输出NULL,但是一旦赋值,就会输出赋值之后的数据。

(3)INOUT的使用

spacer.gif

spacer.gif

3、存储过程学习

(1)SELECT  ..INTO.. 可以把查询的字段赋值给输出字段

例如:SELECT COUNT(*) INTO param1 FROM t;

(2)删除:

DROP PROCEDURE  IF  EXISTS存储过程名

(3)变量的使用:if-then -else

BEGIN

#Routine body goes here...

DECLARE var int;

SELECT COUNT(*) from book;

SELECT num;

SET num=9;

SELECT num;

SET var=num+1;

if var=10 THEN

update book set studentid=var WHERE id=1;

ELSE

SELECT var;

END IF;

END

注:DECLARE var int;语句要写在最上面

(4)条件语句:(case)

Case如下:

BEGIN

#Routine body goes here...

DECLARE var int;

set var=casetest+1;

CASE var

WHEN var=0 THEN

INSERT INTO book(bookName,studentid) VALUES("yuwen",2);

when 1 THEN

INSERT INTO book(bookName,studentid) VALUES("yuwen",1);

when 2 THEN

INSERT INTO book(bookName,studentid) VALUES("yuwen",0);

END CASE;

END

(5)循环语句

BEGIN

#Routine body goes here...

DECLARE var int;

SET var=1;

WHILE var<6 DO

INSERT into book(bookName,studentid) VALUES("shuxue1",var);

SET var=var+1;

END WHILE;

END

(6)

4、其他操作

(1)查看所有存储过程:

SHOW PROCEDURE STATUS

(2)Mysql数据库关于常见的时间函数:

日期时间类

ADDTIME (date2 ,time_interval ) //将time_interval加到date2CURRENT_DATE ( ) //当前日期CURRENT_TIME ( ) //当前时间CURRENT_TIMESTAMP ( ) //当前时间戳DATE (datetime ) //返回datetime的日期部分DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetimeDATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间DATEDIFF (date1 ,date2 ) //两个日期差DAY (date ) //返回日期的天DAYOFWEEK (date ) //星期(1-7) ,1为星期天DAYOFYEAR (date ) //一年中的第几天EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分NOW ( ) //当前时间WEEK (date_time [,start_of_week ]) //第几周YEAR (datetime ) //年份DAYOFMONTH(datetime) //月的第几天HOUR(datetime) //小时LAST_DAY(date) //date的月的最后日期MICROSECOND(datetime) //微秒MONTH(datetime) //月MINUTE(datetime) //分返回符号,正负或0SQRT(number2) //开平方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值