存储过程是存储在数据库目录中的一段声明性SQL语句。 触发器,其他存储过程以及java等应用程序可以调用存储过程,一般情况下,存储过程实现的功能较复杂,而函数实现的功能性更有针对性(函数与存储过程的本质一样)。
存储过程的优点:
通常存储过程有助于提高应用程序的性能。当创建(创建时在服务器),存储过程被编译之后,就存储在数据库中。 但是,MySQL实现的存储过程略有不同。 MySQL存储过程按需编译。 在编译存储过程之后,MySQL将其放入缓存中。
存储过程有助于减少应用程序和数据库服务器之间的流量,因为应用程序不必发送多个冗长的SQL语句,而只能发送存储过程的名称和参数(函数可以和SQL语言一起用,存储过程不行)。
存储的程序对任何应用程序都是可重用的和透明的。 存储过程将数据库接口暴露给所有应用程序,以便开发人员不必开发存储过程中已支持的功能。
存储的程序是安全的。 数据库管理员可以向访问数据库中存储过程的应用程序授予适当的权限,而不向基础数据库表提供任何权限。
常见系统存储过程:
exec sp_databases; --查看数据库
exec sp_tables; --查看表
常见系统存储事例:
--表重命名
exec sp_rename 'stu', 'stud';
select * from stud;
用户自定义创建存储常用语法:
CREATE PROCEDURE `xp`.`GetAllProducts`()
BEGIN
SELECT * FROM yiibaidb.products;
END