参考地址:http://blog.csdn.net/caiwenfeng_for_23/article/details/8470910
一. 存储过程简介
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
存储过程通常有以下优点:
(1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
(3).存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
(4).存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
(5).存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
二、关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
三、测试表结够和数据
1、表结构
CREATE TABLE `t_user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NULL, `sex` VARCHAR(2) NOT NULL, `age` INT(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MYISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
2、测试数据
insert into `t_user` (`id`, `name`, `sex`, `age`) values('1','熊xx','男','29'); insert into `t_user` (`id`, `name`, `sex`, `age`) values('2','熊xxx','男','28');
四、 存储过程格式
DELIMITER // CREATE PROCEDURE proc2(OUT s INT) BEGIN SELECT COUNT(*) INTO s FROM t_user; END; //
1、说明:
这里需要注意的是DELIMITER //和DELIMITER;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
过程体的开始与结束使用BEGIN与END进行标识。
这样,我们的一个MySQL存储过程就完成了,是不是很容易呢?看不懂也没关系,接下来,我们详细的讲解。
2、声明分割符
其实,关于声明分割符,上面的注解已经写得很清楚,不需要多说,只是稍微要注意一点的是:如果是用MySQL的Administrator管理工具时,可以直接创建,不再需要声明。
3、参数
MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE([[IN |OUT |INOUT ]参数名数据类形...])
IN输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT输出参数:该值可在存储过程内部被改变,并可返回
INOUT输入输出参数:调用时指定,并且可被改变和返回
五、创建带输入参数和输出参数的存储过程
DELIMITER // CREATE PROCEDURE sp_add(a INT, b INT,OUT c INT) BEGIN SET c=a+ b; END; //
1、调用存储过程
CALL sp_add (1,2,@a); SELECT @a;
2、结果
相关推荐
mysql-存储过程do-while实现循环,通过do while 实现循环,处理业务数据。
本文将详细介绍MySQL 8.0.20的安装过程,该版本适用于Linux发行版中的EL7(Enterprise Linux 7,如CentOS 7)。提供的压缩包文件名为`mysql-8.0.20-el7-x86_64.tar.gz`,这是一个针对64位系统的tar归档文件,包含了...
除了基本的数据库连接,MySQL Connector/J还提供了丰富的功能,如预编译的Statement对象(PreparedStatement)以防止SQL注入,以及CallableStatement用于调用存储过程。此外,还有事务处理、批处理操作、结果集的...
5. **安装步骤**:首先,双击`mysql-5.5.28-win32.msi`开始安装过程,按照向导提示进行配置。然后,选择安装类型,如选择“Developer Machine”用于个人开发,或“Server Machine”用于多用户环境。接着,设定服务...
MySQL是世界上最受欢迎的开源数据库系统之一,主要用于存储和管理数据。`mysql-server-mysql-5.7.36.tar.gz` 是MySQL服务器的一个特定版本,版本号为5.7.36,它以tar.gz格式打包,这是一种在Linux和Unix-like操作...
它支持MySQL 5.0到5.7版本的数据库服务器,提供了对InnoDB事务、存储过程、预编译语句、连接池等功能的支持。版本号34意味着这是该系列中的第34次更新,通常包含了一些bug修复、性能优化和兼容性改进。 使用`mysql-...
此外,开发者还可以使用JDBC的CallableStatement来调用存储过程,或者利用MySQL的特定特性,比如分区表,视图,触发器等。 总的来说,`mysql-connector-java-5.1.49.tar.gz`是一个对于Java开发者至关重要的组件,它...
MySQL是世界上最受欢迎的...总的来说,MySQL 5.7.22的安装和使用是一个涉及多方面知识的过程,包括系统管理、数据库理论、SQL语法以及性能优化。正确地安装和配置MySQL,可以确保我们的应用程序能够高效、稳定地运行。
1. 支持多种MySQL特性,如存储过程、触发器、视图等。 2. 提供了32位和64位版本,满足不同操作系统的需求。 3. 兼容MySQL服务器的多种版本,包括社区版和企业版。 4. 支持Unicode,可以处理多种语言的数据。 5. 支持...
- **存储过程调用**:支持执行MySQL服务器上的存储过程。 在使用`mysql-connector-java-5.1.47`时,要注意版本兼容性问题,确保驱动版本与运行的MySQL服务器版本匹配。同时,应定期更新驱动以获取最新的安全修复和...
4. **高性能**:基于Go语言的并发处理能力,Go-mysql-schema-sync在处理大量表结构同步时表现出优秀的性能,减少了同步过程中的等待时间。 5. **配置灵活**:用户可以通过配置文件灵活设定同步规则,比如选择特定的...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其性能强大且功能丰富,广泛应用于网站开发、数据存储和处理等场景。Boost是一个C++库集合,提供了各种工具来增强应用程序的性能,包括线程管理、正则表达式...
MySQL 5.5.40的MSI安装程序简化了在Windows上设置MySQL的过程,包括配置服务器参数、设置账户信息和启动服务。 4. **安装步骤**: - 下载“mysql-5.5.40-winx64-msi”压缩包并解压。 - 双击MSI文件启动安装向导,...
2. 创建数据存储目录(如`C:\ProgramData\MySQL\MySQL Server 8.0`)。 3. 使用命令行或安装向导进行配置,包括设置root用户的密码、网络监听地址、端口等。 4. 启动MySQL服务(通常通过服务管理器或命令行`...
MySQL Connector/J还支持JDBC的高级特性,如批处理、存储过程、游标、多结果集等。此外,它还支持MySQL的特性,如SSL连接、分区表、复制和负载均衡。 总结来说,"mysql-connector-j-8.0.31"是Java开发者连接MySQL...
MySQL是世界上最受欢迎的开源数据库管理系统之一,主要用于存储和管理数据。这个特定的压缩包"mysql-8.2.0-winx64-debug-test.zip"包含了MySQL的8.2.0版本,专为Windows 64位操作系统设计。下面将详细讨论MySQL 8.x...
1. **InnoDB引擎优化**:InnoDB作为MySQL的默认存储引擎,在8.0版本中进行了大量的优化,包括更快的插入速度、更高的并发性和更小的内存占用。 2. **窗口函数**:MySQL 8.0引入了SQL标准的窗口函数,允许用户在分组...
MySQL Connector/ODBC是MySQL数据库管理系统与ODBC(Open Database Connectivity)接口之间的桥梁,使得Windows系统上的应用程序可以通过ODBC标准来访问MySQL数据库。这个压缩包包含两个版本的安装程序,分别是...
MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在MySQL数据库上执行CRUD(创建、读取、更新、删除)操作...
此外,MySQL数据库还支持多种其他特性,如事务管理、存储过程、触发器、视图、索引等,这些都可以通过Java应用程序利用`mysql-connector-java`驱动进行操作。对于大型企业级应用,还可能涉及到连接池(如C3P0、...