1.存储过程
(1)存储过程是一组为了完成特定功能的sql语句集合,使用存储过程的目的是将常用或复杂的工
作预先用sql语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器
中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需
调用“call存储过程名”即可自动完成
(2)优点
①存储过程是通过处理封装在容易使用的单元中,简化了复杂的操作
②简化对变动的管理。如果表名、列名、或业务逻辑有了变化,只需要更改存储过程的代码,使用
它的人不用更改自己的代码
③通常存储过程都是有助于提高应用程序的性能。当创建的存储过程被编译之后,就存储在数据库
中。但是,mysql实现的存储过程略有所不同。mysql存储过程是按需编译。在编译存储过程之
后,mysql将其放入缓存中。mysql为每个连接维护自己的存储过程高速缓存。如果应用程序在单
个连接中多次使用存储过程,则使用编译版本,否则存储过程的工作方式类似于查询
④存储过程有助于减少应用程序和数据库服务器之间的流量。因为应用程序不必发送多个冗长的
sql语句,只用发送存储过程中的名称和参数即可
⑤存储过程度任何应用程序都是可重用的和透明的。存储过程将数据库接口暴露给所有的应用程
序,以方便开发人员不必开发存储过程中已支持的功能
⑥储存的程序是安全的。数据库管理员是可以向访问数据库中存储过程的应用程序授予适当的权
限,而不是向基础数据库表提供任何权限
(3)缺点
①如果使用大量的存储过程,那么使用这些存储过程的每个连接的内存使用量将大大增加。此外,
如果在存储过程中过度使用大量的逻辑操作,那么CPU的使用率也在增加,因为mysql数据库最初
的设计就侧重于高效的查询,而不是逻辑运算
②存储过程的构造使得开发具有了复杂的业务逻辑的存储过程变得困难
③很难调试存储过程,只有少数数据库管理系统允许调试存储过程。不幸的是,mysql不提供调试
存储过程的功能
④开发和维护存储过程都不容易。开发和维护存储过程通常需要一个不是所有应用程序开发人员拥
有的专业技能。这可能导致应用程序开发和维护阶段的问题
⑤对数据库依赖程度较高,移植性差
(4)创建存储过程
DELIMITER $$
create procedure 存储过程名(in 变量名 数据类型,out 变量名 数据类型,inout 变量名 数据类型)
begin
declare 变量名 数据类型;
sql语句
end $$
DELIMITER ;
(5)查看存储过程
show create procedure 存储过程名;
(6)调用存储过程
call 存储过程名;
(7)删除存储过程
drop procedure 存储过程名;
2.数据库备份
(1)备份就是为了防止原数据丢失,保证安全性
(2)备份的常用场景
①部署新环境
②部署失败,可以回滚
③服务器宕机
④迁移数据库