网站建设轮播图,杭州网站建设公司有哪几家,网站建设软件哪个好,用phython做网站使用存储过程 
存储过程 简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。 我觉得就是封装了一组sql语句 
为什么需要存储过程#xff08;简单来说就是#xff0c;简单、安全、高性能 
通过把处理封装在容易使用的单元中#xff0c;简化复杂操作所有开发人员…使用存储过程 
存储过程 简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。 我觉得就是封装了一组sql语句 
为什么需要存储过程简单来说就是简单、安全、高性能 
通过把处理封装在容易使用的单元中简化复杂操作所有开发人员和应用程序都是用同一存储过i成则使用的sql语句都是一样的保证了数据的完整性防止数据库中存在不正确的数据简化对变动的管理保证了数据库的安全性防止数据库中存在不正确的数据提高了性能增加了代码功能的灵活性 
执行存储过程 
CALL procedure_name(参数);创建存储过程 
CREATE POCEDURE procedure_name()
BEGINSQL语句
ENDMYSQL命令行客户机的分隔符 默认的MYSQL语句分割符为 ; 如果希望自定义分隔符可以使用 DELIMITER关键字 
DELIMITER //
CREATE PROCEDURE procedure_name
BEGINSQL 语句
END //DELIMITER ;存储过程实际上是一种函数所以存储过程名后边需要有 () 
删除存储过程 
存储过程在创建之后被保存在服务器上以供使用直到被删除 
DROP PROCEDURE procedure_name;注意只需要给出存储过程名不需要加 () 
使用参数 
变量 内存中的一个特定的位置用来临时存储数据 
参数的数据类型 存储过程的参数允许的数据类型与表中使用的数据类型相同 
变量名 MYSQL中所有变量都必须以开始 
游标 
为什么需要游标 MySQL检索操作返回一组成为结果集的行有时需要在检索出来的行中前进或者后退几行这就需要游标 
游标的定义 游标是一个存储在MySQL服务器上的数据库查询它是被语句查询出来的结果集 在存储了游标以后应用程序可以根据需要滚动或浏览器中的数据 游标主要用于交互式应用其中用户需要滚动屏幕上的数据并对数据进行浏览或做出更改 
使用游标 
使用游标前需要声明游标这个过程实际上没有检索数据只是定义要使用的select语句声明游标以后需要将它打开来使用这个过程会使用上一步定义的select语句把数据实际检索出来对于填有数据的游标根据需要取出各行在结束游标使用时必须关闭游标 
创建游标 
CREATE PROCEDURE procedure_name
BEGINDECLARE vernier_name CURSORFORSELECT语句
END打开和关闭游标 
OPEN vernier_nameCLOSE vernier_name在一个游标关闭后如果没有重新打开则不能使用他 但是声明过的游标关闭后不需要再次声明 
隐含关闭如果你不明确关闭游标MySQL会在 END语句使自动关闭游标 
使用游标数据 
当一个游标被打开后可以使用FETCH来访问他的每一行 FETCH指定检索什么数据检索出来的数据存储在什么地方还可以向前移动游标中的内部行指针使下一条FETCH语句检索下一行 
DECLARE vernier_name CURSOR
FOR
SELECT语句OPEN vernier_nameDECLARE O INT
REPEATFETCH vernier_name INTO O
UNTIL condition END REPEATCLOSE vernier_nameDECLARE 语句的次序 局部变量  游标  句柄 
触发器 
为什么需要触发器 有时需要某个表发生改动时自动处理这种情况下就需要触发器 
MySQL中可以触发触发器的语句 DELETE\INSERT\UPDATE 
创建触发器 
触发器需要在每个表中唯一命名但不需要在每个数据库中唯一即数据库中的两个表可具有相同名字的触发器 
CREATE TRIGGER trigger_name AFTER/BEFORE operation ON table_name
FOR EACH ROW 只有表才支持触发器视图不支持 触发器按每个表每个事件每次定义每个表每个事件每次只允许一个触发器 每个表最多支持6个触发器3种操作 * ( before || after )  6 单一触发器不能与多个事件或多个表关联 
删除触发器 
触发器的类型 
INSERT 在INSERT触发器代码内可以引用一个名为NEW的虚拟表访问被插入的行在before insert 触发器中 new的值也可以被更新对于auto_increment列new在insert执行前包含0在INSERT执行后包含新的自动生成值 DELET 在DELET触发器代码内可以引用一个名为OLD的虚拟表访问被删除的行OLD中的值全部都是只读的不能更新 UPDATE 在UPDATE触发器代码中可以引用OLD虚拟表访问UPDATE前的值引用NEW虚拟表访问新更新的值在BEFORE UPDATE触发器中NEW中的值可能也被更新OLD中的值全部都是只读的不能更新  
触发器的使用要点 
创建触发器可能需要特殊的安全访问权限应该用触发器来保重数据的一致性触发器的一种非常有意义的使用是创建审计和跟踪触发器中不能调用存储过程 
管理事务处理 
COMMITROLLBACK 
事务管理 
并非所有的引擎都支持事务处理MyISAM不支持事务处理InnoDB支持事务处理 
事务处理 用于维护数据库的完整性保证成批的MySQL操作要么完全执行要么完全不执行 
事务指一组SQL语句 回退被撤销指定SQL语句的过程 提交将未存储的SQL语句结果写入数据库 保留点事务处理中设置的临时占位符可以对他发布回退 
控制事务处理 
管理事务处理的关键在于将SQL语句组分解为逻辑块并明确规定数据和是应该回退何时不应该回退 
SELECT * FROM table_name;
START TRANSACTION;
DELETE FROM table_name;
SELECT * FROM table_name;
ROLLBACK;
SELECT * FROM order_name;使用COMMIT 
隐含提交一般的MySQL语句都是直接针对数据库表执行和编写的即提交操作是自动进行的 隐含事务关闭当COOMIT和ROLLBACK语句执行后是误会自动关闭 
使用保留点 
为了支持回退部分事务处理可以在事务处理块中的合适位置防止占位符如果需要回退可以回退到某个占位符 
保留点越多越好可以在MySQL代码中设置任意多的保留点保留点越多你就越能按自己的意愿灵活的进行回退 
释放保留点保留点在事务处理完成后自动释放也可以使用RELEASE SAVEPOINT明确的释放保留点 
更改默认的提交行为 
SET autocommit0;autocommit标志决定是否自动提交更改不管有没有COMMIT语句 autocommit针对每个连接而不是服务器