存储过程介绍
• 什么存储过程
– 数据库中保存的一系列 sql 命令的集合
– 编写存储过程时,可以使用变量、条件判断、流程控制等
– 存储过程,就是 MySQL 中的脚本
存储过程优点
• 存储过程优点
– 提高性能
– 可减轻网络负担 //编译执行
– 可以防止对表的直接访问
– 避免重复的 sql 操作
mysql 服务过程的脚本
变量
流程控制
参数
基本使用:
创建存储过程:
mysql> delimiter //
mysql> create procedure p1()
-> begin
-> select count(name) from db9.user;
-> end
-> //
Query OK, 0 rows affected (0.01 sec)
查看存储过程:
方法一:
mysql> show procedure status\G;
方法二:
mysql> select db,name,type from mysql.proc where name="p1"\G;
*************************** 1. row ***************************
db: db9
name: p1
type: PROCEDURE
1 row in set (0.00 sec)
ERROR:
No query specified
调用存储过程:
mysql> call p1;
+-------------+
| count(name) |
+-------------+
| 41 |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> call p1();
+-------------+
| count(name) |
+-------------+
| 41 |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
删除存储过程:
mysql> drop procedure p1;
Query OK, 0 rows affected (0.00 sec)
mysql> drop procedure if exists say;
做一个存储过程,查看use表的shell的个数
mysql> delimiter //
mysql> create procedure p2()
-> begin
-> select count(name) from user where shell="/bin/bash";
-> end
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call p2();
+-------------+
| count(name) |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)