MySQL呼吁,一篇文章替你所有搞定
存储进程的弱点?(1)存储进程编写比根基的SQL语句越发伟大,必要更高的手艺;(2)也许没有建设存储进程的权限,数据库打点员也许会限定建设存储进程的权限,应承用户行使存储进程,而不应承用户自由建设存储进程; 建设存储进程 建设存储进程。如必要统计用户订单总金额,假如该用户必要交税的话,订单总金额则必要再加上税费 有这样一些细节: 1. 行使CREATE PROCEDURE语句举办建设,()圆括号中为存储进程的参数,个中参数范例有:1.IN范例,暗示转达给存储进程;2.OUT范例,暗示存储进程返回的功效,在挪用存储进程时必要传入@开始的变量;3.INOUT范例,暗示在存储进程中可以传入和传出; 2.DECLARE用来声明一个变量,如这里的total,taxrate。留意MySQL中界说变量时都是变量名在前,数据范例在后。 3. 存储进程详细逻辑写在BEGIN END之间; 4. 将值赋给变量行使INTO要害字; 5. 因为存储进程中每个SQL语句顶用;作为脱离符,会和单个SQL造成斗嘴,因此可行使DELIMITER从头界说分类符,如该例子中界说//为脱离符,天然存储进程末了就用END //末了,而不再是END。同时,脱离符//成对呈现后,规复到默认的";"作为脱离符; 执行存储进程 行使CALL子句执行存储进程,CALL子句接管存储进程的名称以及必要转达的参数。 假如存储进程中界说了OUT范例的输入参数,那么在执行存储进程时必要传入变量,如这里@total,而且变量都是用@开始的。假如存储进程中没有参数的话,就用空圆括号暗示即可,CALL ordertotal(); 删除存储进程 删除存储进程,可以行使DROP PROCEDURE子句。如DROP PROCEDURE ordertotal; 查询存储进程 表现建设一个存储进程的语句,可以行使SHOW CREATE PROCEDURE。如SHOW CREATE PROCEDURE ordertotal; 查询全部存储进程的状态,假如在界说存储进程中行使COMMENT添加注释,可以查察。同时可以LIKE举办过滤功效。如SHOW PROCEDURE STATUS LIKE '%order%'; 6. 事宜处理赏罚什么是事宜? 事宜处理赏罚是用来维护数据库的完备性,它担保成批的MySQL操纵要么完全执行,要么完全不执行。事宜处理赏罚是一种机制,用来打点必需成批执行的MySQL操纵,它们要么时作为整体执行可能完全不执行。 要害观念: 事宜:是指一组SQL语句; 回退:是指取消指定的SQL语句的进程; 提交:指将未存储的SQL语句的功效写入数据库表中; 保存点:指事宜处理赏罚中配置的姑且占位符,可以对它宣布回退; 怎样建设执行事宜? 执行功效为:插入数据('1',5,18)有用,由于,只会从保存点SAFEPOINT之后开始回退,也就是说保存点SAFEPOINT之前的SQL语句执行的功效如故有用。 有这样一些细节: STAET TRANSACTION用来暗示下面的SQL语句集为一段事宜; SAFEPOINT用于指定保存点insertinto; ROLLBACK TO暗示从指定保存点开始回退,也就是说保存点之前的SQL语句执行功效依然有用。假如仅仅行使ROLLBACK举办回退的话就暗示从STAET TRANSACTION之后全部的SQL语句执行结果城市取消; MySQL提交(写或生涯)操纵是自动举办的,这称之为隐含提交。可是在事宜处理赏罚块中,提交不会隐含举办,要行使COMMIT子句举办提交。如: 回收COMMIT提交事宜,假如两条SQL语句都执行乐成,才会将数据都写入表中。 7. 触发器什么是触发器? 当某条SQL语句产生时,自动执行某些其他的SQL语句的时辰就必要行使到触发器。触发器只能相应:DELETE,INSERT,UPDATE这三个特定操纵。 建设触发器? 建设触发器时必要给出最重要的四条信息:1.全局独一的触发器名;2.触发器关联的表;3.触发器在何时执行(操纵执行之前可能之后)4.触发器应该相应的勾当(DELETE, INSERT可能UPDATE); 因为触发器只能相应特定的三种范例的操纵,因此可建设的触发器也就三种范例:INSERT触发器,DELETE触发器以及UPDATE触发器。 INSERT触发器 在执行INSERT触发器时,也这样几点必要留意:1.在INSERT触发器代码内,可以引用一个名为NEW的假造表,可以用NEW来会见刚插入的行数据;2.在BEFORE INSERT触发器中,NEW中的值可以被更新;3.对付AUTO_INCREMENT列,NEW在INSERT执行之前包括0,在INSERT执行之后包括新的自定天生值。 建设一个INSERT触发器,每次插入一行数据,每次会返回当前插入的行数据的id。 有这样一些细节: 行使CREATE TRIGGER来建设触发器; AFTER INSERT表白在插入行数据之后,触发器才会执行特性操纵; FOR EACH ROW 暗示对插入的每一行数据,触发器都起浸染; 针对INSERT触发器,可以行使假造表NEW,来行使刚插入的行数据。好比例子中,SELECT NEW.cust_id INTO @newinsertid暗示将新插入的行数据的id赋值给变量@newinsertid; DELETE触发器 DELETE触发器在DELETE语句执行之前可能之后,必要知道以下两点: 在DELETE触发器代码内,可以引用一个名为OLD的假造表,来会见被删除的行; OLD表中的数据只能读,不能被更新,而在INSERT触发器中,就可以通过NEW来更新被插入的行数据; (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |