MySQL

MySQL 知识量:16 - 40 - 165

10.1 了解存储过程><

什么是存储过程- 10.1.1 -

在数据库应用中,对于复杂的业务,单个SQL语句很难完成任务,许多操作都需要多条语句才能完成。

例如:要在选课表中添加一个学生的新的选课记录。

  • 选课表中实际记录的是学生的id和课程id。

  • 要添加新记录,首先,要根据学生的姓名查询学生的id,确保该学生信息已经注册过。

  • 其次,根据选择的课程查询课程表中对应的课程id,确保选择的课程是可选的。

  • 最后,在选课表中添加查询到的学生id和课程id。

以上操作涉及多条SQL语句,而且,这些业务处理是简化的,比如,如果学生信息没有注册,即查询不到学生id,就应该先进行学籍注册或返回错误提示。

添加选课记录是经常会发生的事情,如果每次都单独编写每条SQL语句,一定是很麻烦的事。这时,存储过程就可以派上用场了。

存储过程就是为了以后多次使用而创建并保存的一条或多条SQL语句,就像window系统的批处理文件一样。

为什么使用存储过程- 10.1.2 -

为什么要使用存储过程呢?理由如下:

  • 可以简化复杂的数据库操作。

  • 通过将复杂的SQL操作封装到一个单元里,重复使用这个单元,可以确保数据操作的一致性。

  • 可以简化对SQL语句的修改。如果要修改某个表名或业务逻辑,只需要修改存储过程中的代码就可以,使用存储过程的人甚至都不需要知道如何修改的,只要正确应用存储过程就可以。

  • 存储过程通常都编译过后再存储,MySQL在需要时可以直接执行,提高了性能。

  • 有些SQL元素和特性只能用于单个请求,利用存储过程就可以灵活的使用它们了,从而创建出更加强大的功能。

除了以上优点,存储过程也存在一些不足,例如:

  • 存储过程比一般的SQL语句要复杂的多,因此,编写存储过程需要更好的数据库技能和丰富的经验。

  • 正因为存储过程的编写需要更好的技术,因此,MySQL安全策略允许管理员限制存储过程的创建。但是,MySQL将创建存储过程与执行存储过程所需的安全和访问权限分开管理,因此,即使不能创建存储过程,也可以方便的执行它。