• 技术文章 >数据库 >mysql教程

    mysql有没有存储过程

    青灯夜游青灯夜游2022-06-15 18:37:11原创186

    mysql有存储过程。存储过程是一组为了完成特定功能的SQL语句集合,MySQL5.0版本以前不支持存储过程,但从5.0版本开始支持存储过程,这样既提高了数据库的处理速度,同时也提高了数据库编程的灵活性。存储过程可以用来转换数据、数据迁移、制作报表,它类似于编程语言,一次执行成功,就可以随时被调用,完成指定的功能操作。

    本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

    mysql有存储过程。

    存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用“CALL存储过程名字”即可自动完成。

    常用操作数据库的 SQL 语句在执行的时候需要先编译,然后执行。存储过程则采用另一种方式来执行 SQL 语句。

    一个存储过程是一个可编程的函数,它在数据库中创建并保存,一般由 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的特定功能时,存储过程尤为合适。

    MySQL 5.0 版本以前并不支持存储过程,这使 MySQL 在应用上大打折扣。MySQL 从 5.0 版本开始支持存储过程,既提高了数据库的处理速度,同时也提高了数据库编程的灵活性

    存储过程是数据库中的一个重要功能,存储过程可以用来转换数据、数据迁移、制作报表,它类似于编程语言,一次执行成功,就可以随时被调用,完成指定的功能操作。

    使用存储过程不仅可以提高数据库的访问效率,同时也可以提高数据库使用的安全性。

    对于调用者来说,存储过程封装了 SQL 语句,调用者无需考虑逻辑功能的具体实现过程。只是简单调用即可,它可以被 Java 和 C# 等编程语言调用。

    编写存储过程对开发者要求稍微高一些,但这并不影响存储过程的普遍使用,因为存储过程有如下优点:

    1) 封装性

    通常完成一个逻辑功能需要多条 SQL 语句,而且各个语句之间很可能传递参数,所以,编写逻辑功能相对来说稍微复杂些,而存储过程可以把这些 SQL 语句包含到一个独立的单元中,使外界看不到复杂的 SQL 语句,只需要简单调用即可达到目的。并且数据库专业人员可以随时对存储过程进行修改,而不会影响到调用它的应用程序源代码。

    2) 可增强 SQL 语句的功能和灵活性

    存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

    3) 可减少网络流量

    由于存储过程是在服务器端运行的,且执行速度快,因此当客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而可降低网络负载。

    4) 高性能

    当存储过程被成功编译后,就存储在数据库服务器里了,以后客户端可以直接调用,这样所有的 SQL 语句将从服务器执行,从而提高性能。但需要说明的是,存储过程不是越多越好,过多的使用存储过程反而影响系统性能。

    5) 提高数据库的安全性和数据的完整性

    存储过程提高安全性的一个方案就是把它作为中间组件,存储过程里可以对某些表做相关操作,然后存储过程作为接口提供给外部程序。这样,外部程序无法直接操作数据库表,只能通过存储过程来操作对应的表,因此在一定程度上,安全性是可以得到提高的。

    6) 使数据独立

    数据的独立可以达到解耦的效果,也就是说,程序可以调用存储过程,来替代执行多条的 SQL 语句。这种情况下,存储过程把数据同用户隔离开来,优点就是当数据表的结构改变时,调用表不用修改程序,只需要数据库管理者重新编写存储过程即可。

    MySQL 存储过程实例

    我们将逐步向您展示如何使用CREATE PROCEDURE开发第一个MySQL存储过程。此外,我们将向您展示如何从SQL语句调用存储过程。

    编写第一个MySQL存储过程

    我们将开发一个简单的存储过程,以GetAllProducts() 帮助您熟悉语法。GetAllProducts() 存储过程选择所有产品从products 表。

    启动mysql客户端工具并键入以下命令:

     DELIMITER //
     CREATE PROCEDURE GetAllProducts()
       BEGIN
       SELECT productCode, productName FROM products;
       END //
     DELIMITER ;

    执行命令:

    mysql> DELIMITER //
    mysql> CREATE PROCEDURE GetAllProducts()
    -> BEGIN
    -> SELECT productCode, productName FROM products;
    -> END //
    Query OK, 0 rows affected (0.02 sec)
    mysql> DELIMITER ;

    让我们更详细地检查存储过程:

    查看存储过程

    我们可以使用如下命令查看指定的数据库中有哪些存储过程:

     select name from mysql.proc where db='mysqldemo';

    运行结果:

    1.png

    调用存储过程

    要调用存储过程,请使用以下SQL命令:

    CALL stored_procedure_name();

    您使用CALL 语句调用存储过程,例如,要调用GetAllProducts() 存储过程,请使用以下语句:

    CALL GetAllProducts();

    如果执行上述语句,您将获得products表中的所有产品。

    2.png

    【相关推荐:mysql视频教程

    以上就是mysql有没有存储过程的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql
    上一篇:mysql中怎么将字符串转为浮点数 下一篇:mysql怎么给列(字段)加注释
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• mysql中between and怎么用• mysql怎么取字符串前几位• mysql可以创建联合索引吗• mysql日期用什么类型• mysql中clob和blob的区别是什么
    1/1

    PHP中文网