【MySQL】7、存储过程与自定义函数、数据的备份与恢复

14. 存储过程定义与使用

14.1 无参的存储过程

# 修改定界符
mysql> delimiter //

# 创建存储过程
mysql> create procedure proc01()
    -> begin
    ->  select count(*) from student;
    -> end//
Query OK, 0 rows affected (0.01 sec)

# 调用存储过程
mysql> call proc01()//
+----------+
| count(*) |
+----------+
|       43 |
+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

14.2 带有一个输入参数的存储过程

# 创建一个带有输入参数的存储过程,其中的 in 代表输入参数,可以省略
mysql> create procedure proc02(in str char(2))
    -> begin
    ->  select * from student where sex = str;
    -> end//
Query OK, 0 rows affected (0.00 sec)

mysql> call proc02('男')//
+-----+--------+------+------+-----------------------------+------+
| sid | sname  | sex  | age  | addr                        | cid  |
+-----+--------+------+------+-----------------------------+------+
|   1 | 张三   | 男   |   22 | 上海                        |    1 |
|   2 | 李四   | 男   |   21 | 深圳                        |    2 |
|   4 | 龙杰宏 | 男   |   25 | 成华区双庆路475号           |    2 |
|   5 | 沈云熙 | 男   |   36 | 东城区东单王府井东街625号   |    3 |
|   6 | 贺嘉伦 | 男   |   18 | 天河区大信商圈大信南路438号 |    2 |
|   7 | 赵子异 | 男   |   25 | 京华商圈华夏街772号         |    2 |
+-----+--------+------+------+-----------------------------+------+
29 rows in set (0.01 sec)

Query OK, 0 rows affected (0.03 sec)

14.3 带有一个输入输出参数的存储过程

# 带有输入和输出参数的过程
mysql> create procedure proc03(in gender char(2),out count int)
    -> begin
    ->  select count(*) into count from student where sex = gender;
    -> end//
Query OK, 0 rows affected (0.00 sec)

# 调用过程,这里的 @count 代表会话变量,可以理解为全局变量,名字任意
mysql> call proc03('男',@count)//
Query OK, 1 row affected (0.00 sec)

mysql> select @count//
+--------+
| @count |
+--------+
|     29 |
+--------+
1 row in set (0.00 sec)

15. 自定义函数

# 注意:定义函数的语法与定义存储过程的语法很类似,只是必须要指定返回值类型,即:在 begin 前 returns int
create procedure func01()
returns int
begin
	declare h int;
	select hour(now()) into h;
	return h;
end//

# 函数的调用
select func01()//

16. 数据的备份与恢复

16.1 在 DOS 状态备份数据库

PS C:\Users\27951> mysqldump -uroot -p密码 java1301 > c:/java1301.sql

16.2 在 DOS 状态恢复数据库

PS C:\Users\27951> mysql -uroot -p密码 java1301 < c:/java1301.sql

16.3 在 MySQL 控制台状态恢复数据库

mysql> create database java1301 character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> use java1301
Database changed

# 先创建数据库,再切换数据库,再恢复数据库。
mysql> source c:/java1301.sql;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生146

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值