存储过程-触发器-事务

本文详细介绍了MySQL中的存储过程,包括如何定义、调用及参数传递,例如创建并执行一个获取书籍记录的存储过程。接着讲解了触发器的概念,当表数据发生变化时自动执行特定操作,如在删除分类时删除对应书籍。最后讨论了事务的四大特性,以及如何使用事务确保数据一致性,通过实例展示了事务的开始、提交和回滚。
摘要由CSDN通过智能技术生成

一、存储过程

存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

定义存储过程

procedure   [prəˈsi:dʒə(r)]   程序

create procedure 过程名(参数1,参数2....)

begin

       sql语句:

end

调用存储过程:

call 过程名(参数1,参数2);

默认SQL语句执行符号“; ”

使用delimiter可以修改执行符号  。

语法:

delimiter 新执行符号

例:修改;为//

mysql> delimiter //

注:因为默认执行完sql语句遇到;后,就结束了。

delimiter  分隔符  [dɪ'lɪmɪtə]

1 例子:定一个存储过程,查看category表中所有数据

delimiter //               # 更改结束符号的。

创建一个存储过程:

mysql>use book;

mysql> delimiter //

mysql> createprocedure selCg()

    -> begin

    -> select * from category;

    -> end //

Query OK, 0 rowsaffected (0.10 sec)

调用存储过程

mysql> callselCg()//

+---------+---------------+

| bTypeId |bTypeName     |

+---------+---------------+

|       1 | windows应用 |

|       2 | 网站        |

|       3 | 3D动画      |

|       4 | linux学习   |

|       5 | Delphi学习 |

|       6 | 黑客        |

|       7 | 网络技术  |

|       8 | 安全        |

|       9 | 平面        |

|      10 | AutoCAD技术 |

+---------+---------------+

10 rows in set (0.15sec)

总结:一次编译,永久执行。   

2、存储过程参数传递:

in 传入参数 把参数传递到过程内部。

out 传出参数

inout 传入传出参数

into 赋值

例:定义存储过程getOneBook,当输入某书籍id后,可以调出对应书籍记录

//in---传入参数 -----------------------------------------

mysql> createprocedure getOneBook(in b int)

    -> begin

    -> select * from books where bId=b;

    -> end //

Query OK, 0 rowsaffected (0.01 sec)

mysql> callgetOneBook(3);//

+-----+-----------------------------+---------+-----------------------------+-------+------------+--------+-----------+

|bId | bName                       |bTypeId | publishing                  |price | pubDate    | author | ISBN      |

+-----+-----------------------------+---------+-----------------------------+-------+------------+--------+-----------+

|   3 | 网络程序与设计-asp | 2       | 北方交通大学出版社 |    43 | 2005-02-01 | 王玥 | 75053815x |

+-----+-----------------------------+---------+-----------------------------+-------+------------+--------+-----------+

1row in set (0.00 sec)

例:存储过程中 out --传出参数

into 在select 语句中表示给变量赋值。

call demo(@a);    #     使用@a来接受out传出的值。  mysql中的变量表示方法: @变量名

mysql> createprocedure demo(out pa varchar(200))

begin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值