8、MySLQ存储过程


简述存储过程是SQL语句和控制流语句的语句串(语句集合)。它不仅可以带有输入参数还可以带有输出参数,存储过程是能够通过介绍参数向调用者返回结果集,结果集的格式由调用者确定。返回状态值给调用者,指明调用是成功或是失败,包括针对数据库的操作语句,并且可以在一开发云主机域名个存储过程中调用另一存储过程。较SQL语句存储过程的优点:1、存储过程允许组件是编程,存储过程在被创建以后,可以在程序中多次调用,而不必重新编写存储过程的SQL语句,从而提高了程序的可移植性。2、存储过程能够实现较快的存储速度。3、存储过程能够减少网络流量。对于针对数据库对象的相同操作如查询,修改表如果这一操作所涉及的SQL语句被组织成存储过程,那么当计算机调用该存储过程时,网络中传送的只是该调用语句,而不是多条SQL语句,从而大大提高网络流量见底网络负载。4、存储过程可被作为一种安全机制。一、存储过程的创建1.1 存储过程语法:创建存储过程之前我们必须使用delimiter修改MySQL语句的默认结束符,否则不能创建成功。存储过程语句的注释:MySQL注释的两种风格”–“:单行注释/*……*/:一般用于多行注释
语法:1.2 调用存储过程call (参数1、参数2、…);1.3 存储过程参数类型1.3.1 IN参数作用:读取外部变量值,且有效范围仅限于存储过程内部等同于 set @p_in=1;call pin(2)与select @p_in结果作比较实例1 存储过程的简单创建和调用定义存储过程getonebook,当输入书的ID后可以调用处对应的书籍记录1.3.2 Out参数作用:不都去外部变量值,在存储过程执行完毕后保留新值。实例2、执行call @p_out存储过程之后,再次使用select @p_out则显示为2;则说明此时变量@P_out已经被赋予2;
1.3.3 如何调用存储过程out类型的返回值例4、编辑存储过程,使返回值是书名相关信息。1.3.4 Inout参数作用:读取外部变量,在存储过程执行完毕后保留心新值1.3.5 不加参数的存储过程如果存储国恒在创建的时候没有指定参数类型,则需要在调用的时候指定参数值。二、存储过程变量的使用2.1 使用declare进行变量定义变量定义:declare variable_name [,variable_name……]
二、存储过程的流程控制语句2.1 BEGIN……END语句定义由顺序执行的SQL语句构成的块。语法格式:2.2 IF…ELSE语句该语句用来定义有条件执行的某些语句,其中ELSE语句是可选择的语法格式:2.3 循环语句1、while……end while:while 1 do … if *** then break;end while2、repeat ……end repeat:执行操作后检查结果,而while则是执行前进行检查3、loop……end loop:loop循环不需要初始化条件,类似while循环,同时repeat循环一样不需要结束条件,leave语句的意义是离不开循环。4、LABLES标号可以用在begin repeat while 或者loop语句前,语句标号只能在合法的语句前使用。可以跳出循环,使运行指令达到符合语句的最后异步5、ITERATE迭代通过引用符合语句的标号,来重新开始符合语句查看存储过程:show create procedure demo G查看所有存储过程mysql> show procedure statusG;修改存储过程:使用alter语句修改alter {procedure|function} sp_name [characteristic…]characteristic:{contains SQL| NO SQL|READS SQL DATA|MODIFIES SQL DATA}| SQL SECURITY {DEFINER|INVOKER}|COMMENT ‘string’sp_name参数表示存储过程或函数名称characreristic参数指定存储过程函数的特性。CONTAINS SQL表示子进程包含SQL语句,但不包含读或写数据的语句;NO SQL表示子程序中不包含SQL语句READSSQL DATA表示子程序博阿寒写数据的语句。SQL SECURITY {DEFINER|INVOKER}指明谁有权限来执行DEFINER表示只有定义者自己才能够执行INVOKER表示调用者可以执行COMMENT ‘string’是注释信息
删除存储过程语法一:drop procedure sp_name语法二:drop procedure if exists sp_name注:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程事务是由一组SQL语句组成的逻辑处理单元,要不全成功要不全失败事务处理:可以确保非事务性单元的多个操作都能够成功完成,否则不会更新数据资源。数据库默认事务是自动提交的, 也就是发一条 sql它就执行一条。如果想多条 sql放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,mysql 会自动回滚事务。或者我们使用 rollback 命令手动回滚事务。作用:事务是程序更加可靠,简化错误恢复四大特性:原子性(Autmic):事务在执行,要么全做,要么不做。一致性(Consistency):事务必须是使数据库从一个一致性状态编导另一个一致性状态,一致性与原子性密切相关。在事务开始之前和结束之后,数据库的完整性没有被破坏。隔离性(Isolation):一个事务的执行不能被其他事务干扰。及一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰,这些通常经过加锁来实现。持久性(Durability):指一个事务一旦提交,他对数据中的数据的改变就应该是永久性的,接下来的其他操作或故障不应该对齐有任何影响。mysql事物处理实例MYSQL的事务处理主要有两种方法
1.
begin,rollback,commit来实现
begin
开始一个事务
rollback
事务回滚
commit
事务确认
2.
直接用set来改变mysql的自动提交模式
mysql
默认是自动提交的,也就是你提交一个query,就直接执行!可以通过
set autocommit = 0
禁止自动提交
set autocommit = 1
开启自动提交但要注意当用set autocommit = 0 的时候,你以后所有的sql都将作为事务处理,直到你用commit确认或 rollback结束,注意当你结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!
MYSQL
只有 INNODBBDB类型的数据表才支持事务处理,其他的类型是不支持的!

相关推荐: MySQL基础操作

1,Linux下安装完后root密码为空,使用以下命令创建密码2,连接到MySQL服务器3,退出quit或exit1,查看所有数据库2,创建数据库3,删除数据库4,切换数据库5,查看正在使用的数据库1,查看数据库中所有表2,创建表Example3,删除表4,查…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/04 17:53
下一篇 06/04 17:53

相关推荐