铁岭网站seo,徐州网站建设技术,东莞城建局电话是多少,互联网推广平台文章目录 MySQL存储过程一.MySQL存储过程1.概述2.简介3.存储过程中的控制结构及应用场景4.存储过程的优点5.存储过程语法6.不带参数创建#xff08;示例#xff09;6.1 创建存储过程6.2 调用存储过程6.3 查看存储过程6.4 存储过程的参数 7.实例8.修改存储过程9.删除存储过程 … 文章目录 MySQL存储过程一.MySQL存储过程1.概述2.简介3.存储过程中的控制结构及应用场景4.存储过程的优点5.存储过程语法6.不带参数创建示例6.1 创建存储过程6.2 调用存储过程6.3 查看存储过程6.4 存储过程的参数 7.实例8.修改存储过程9.删除存储过程 总mysql 优化 MySQL存储过程
一.MySQL存储过程
1.概述
MySQL 相关知识都是针对一个表或几个表的单条 SQL 语句使用这样的SQL语句虽然可以完成用户的需求但在实际的数据库应用中有些数据库操作可能会非常复杂可能会需要多条 SQL 语句一起去处理才能够完成这时候就可以使用存储过程轻松而高效的去完成这个需求有点类似she11脚本里的函数。
2.简介
1存储过程是一组为了完成特定功能的SQL语句集合。
2存储过程这个功能是从5.0版本才开始支持的它可以加快数据库的处理速度增强数据库在实际应用中的灵活性。
3存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来这个过程经编译和优化后存储在数据库服务器中。
4当需要使用该存储过程时只需要调用它即可。操作数据库的传统 SQL语句在执行时需要先编译然后再去执行跟存储过程一对比明显存储过程在执行上速度更快效率更高。
3.存储过程中的控制结构及应用场景
存储过程在数据库中 创建并保存它不仅仅是SQ语句的集合还可以加入一些特殊的控制结构也可以控制数据的访问方式。存储过程的应用范围很广例如封装特定的功能、 在不同的应用程序或平台上执行相同的函数等等。
4.存储过程的优点
1执行一次后会将生成的二进制代码驻留缓冲区提高执行效率
2SQL语句加上控制语句的集合灵活性高
3在服务器端存储客户端调用时降低网络负载
4可多次重复被调用可随时修改不影响客户端调用
5可完成所有的数据库操作也可控制数据库的信息访问权限
5.存储过程语法
CREATE PROCEDURE 过程名 ([过程参数[,…] ]过程体
[过程参数[,…] ] 格式
过程名: 尽量避免与内置的函数或字段重名
过程体: 语句
[ IN I OUT I INOUT ]参数名类型
6.不带参数创建示例
6.1 创建存储过程
#将语句的结束符从分号临时改为两个$$(可自定义)
mysql delimiter $$
#创建存储过程过程名为proc不带参数
mysql create procedure proc()
#以关键字begin开始- begin
#存储过程中有哪些参数- create table xx (id int (10), name char(10),score int (10));
#插入数据- insert into xx values (1,hmbb,18);
#过程体语句- select * from xx;
#过程体以关键字end结束- end $$
Query OK, 0 rows affected (0.02 sec)
#讲语句的结束符号恢复为分号
delimiter ;6.2 调用存储过程
call proc();存储过程的主体都分被称为过程体
以BEGIN开始以END结束若只有一条sQL语句则可以省略BEGIN-END
以DELIMITER开始和结束
#$$是用户自定义的结束符
mysql delimiter $$
#分号前有空格
mysqlDELIMITER ; 6.3 查看存储过程
1格式
#查看某个存储过程的具体信息
SHOW CREATE PROCEDURE [数据库.]存储过程名; 2示例
mysql show create procedure proc\G
*************************** 1. row ***************************Procedure: procsql_mode: PIPES_AS_CONCAT,ANSI_QUOTES,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONCreate Procedure: CREATE DEFINERrootlocalhost PROCEDURE proc()
begin
create table xx (id int (10), name char(10),score int (10));
insert into xx values (1,hmbb,18);
select * from xx;
end
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8_general_ci
1 row in set (0.00 sec)#查看存储过程
SHOW PROCEDURE STATUS #查看指定存储过程信息
mysql SHOW PROCEDURE STATUS like %proc%\G
*************************** 1. row ***************************Db: className: procType: PROCEDUREDefiner: rootlocalhostModified: 2023-07-20 14:56:12Created: 2023-07-20 14:56:12Security_type: DEFINERComment:
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8_general_ci
1 row in set (0.00 sec)6.4 存储过程的参数
1IN 输入参数表示调用者向过程传入值传入值可以是字面量或变量 2OUT 输出参数表示过程向调用者传出值(可以返回多个值)传出值只能是变量 3INOUT 输入输出参数既表示调用者向过程传入值又表示过程向调用者传出值值只能是变量
7.实例
mysql delimiter
mysql create procedure proc2 (in inname varchar(40))- begin- select * from info where nameinname;- end
Query OK, 0 rows affected (0.00 sec)mysql delimiter ;
mysql call proc2(wangwu);
------------------------------------------------
| id | name | score | address | hobbid | addr |
------------------------------------------------
| 2 | wangwu | 120.00 | shengzheng | 2 | |
------------------------------------------------
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)8.修改存储过程
1格式
ALTER PROCEDURE 过程名[特征... ]2示例
ALTER PROCEDURE GetRole MODIFIES SQL DATA SQL SECURITY INVOKER;MODIFIES SQLDATA:表明子程序包含写数据的语句 SECURITY:安全等级 invoker:当定义为INVOKER时只要执行者有执行权限就可以成功执行。
9.删除存储过程
存储过程内容的修改方法是通过删除原有存储过程之后再以相同的名称创建新的存储过程。
DROP PROCEDURE IF EXISTS Proc;总
mysql 优化
MySQL 的性能优化可以从以下几个方面入手
1数据库的逻辑设计
合理的表结构设计包括表之间的关系和索引设计等避免使用不必要的关联查询和子查询避免使用不必要的交叉表查询、全表扫描等操作
2系统配置优化
适当增加系统内存、硬盘、CPU 等硬件设施优化 MySQL 的配置如应用正确的缓存、调整 MySQL 配置参数等
3SQL 查询优化
使用正确的索引优先使用覆盖索引尽量避免在 SQL 中使用算法处理或函数操作通过分析慢查询日志、MySQL Explain 等实现优化。
4连接池和缓存的使用
合理设置连接池参数例如连接池大小、最大连接数通过缓存技术减少对数据库的访问次数如使用 Redis 等内存数据库进行缓存
5确保 MySQL 的安全稳定
及时进行备份和恢复操作保证数据的完整性和可靠性开启 MySQL 的事务管理确保数据库操作的原子性和一致性使用安全的 SQL 编写方式如避免 SQL 注入、拒绝服务攻击、暴力破解等攻击。
需要注意的是MySQL 的性能优化是一个综合性的工作不同的业务场景、不同的数据库规模都会有不同的优化方案具体实现也应根据具体情况来进行调整和优化。调优时应注意造成性能问题的原因重点突破站在性能问题的源头进行优化调整。