面试的时候被问到存储过程,如果没有做过很大型的项目,确实会比较吃亏,因为根本没机会使用存储过程。
什么是存储过程?
定义:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
是不是读完毫无概念。我觉得,存储过程说白了就是一堆SQL的合并。中间加了点逻辑控制。
其实:存储过程和存储函数就是指在数据库中供所有用户程序调用的子程序。
存储过程和存储函数的最大和唯一区别?
存储过程没返回值,而存储函数有返回值。
存储过程的什么情况下使用呢?
存储过程是处理比较复杂的业务时比较实用。会提高运行效率
比如:一个复杂的数据操作,如果你在前台处理的话,可能会涉及到多次数据库连接。但如果你用存储过程的话,就只有一次。从响应时间上来说有优势。
且程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。也就是说从安全上讲,使用了存储过程的系统更加稳定。
当项目数据量小的,或者和钱没关系的项目不用存储过程也可以正常运作。mysql 的存储过程还有待实际测试。
存储过程一般通过sql server 或 oracle 来实现使用。数据与数据之间打交道的话,过程会比程序来的快的多。
那么使用存储过程有哪些优势呢?
1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2. 当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
3. 存储过程可以重复使用,可减少数据库开发人员的工作量。
4. 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。