当前位置: 首页 > news >正文

【MySQL|进阶】存储过程

文章目录

  • 1.什么是存储过程
  • 2.环境和数据准备
  • 3.存储过程的语法

1.什么是存储过程

存储过程就是把一段经常要执行的 SQL 代码,提前打包好、起个名字,存到数据库里,以后直接调用名字就能运行。可以把它理解成数据库里的 “快捷指令”或封装好的函数

2.环境和数据准备

MySQL版本:8.0以上

-- 新建数据库DROPDATABASEIFEXISTStopic01;CREATEDATABASEtopic01CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ci;usetopic01;-- 班级表droptableifexistsclass;createtableclass(idbigintprimarykeyauto_increment,namevarchar(20));-- 学生表droptableifexistsstudent;createtablestudent(idbigintprimarykeyauto_increment,namevarchar(20)notnull,snovarchar(10)notnull,ageintdefault18,gendertinyint(1),enroll_datedate,class_idbigint,foreignkey(class_id)referencesclass(id));-- 课程表droptableifexistscourse;createtablecourse(idbigintprimarykeyauto_increment,namevarchar(20));-- 分数表droptableifexistsscore;createtablescore(idbigintprimarykeyauto_increment,scorefloat,student_idbigint,course_idbigint,foreignkey(student_id)referencesstudent(id),foreignkey(course_id)referencescourse(id));-- 课程表insertintocourse(name)values('Java'),('C++'),('MySQL'),('操作系统'),('计算机网络'),('数据结构');-- 班级表insertintoclass(name)values('Java001班'),('C++001班'),('前端001班');-- 学生表insertintostudent(name,sno,age,gender,enroll_date,class_id)values('唐三藏','100001',18,1,'1986-09-01',1),('孙悟空','100002',18,1,'1986-09-01',1),('猪悟能','100003',18,1,'1986-09-01',1),('沙悟净','100004',18,1,'1986-09-01',1),('宋江','200001',18,1,'2000-09-01',2),('武松','200002',18,1,'2000-09-01',2),('李逹','200003',18,1,'2000-09-01',2),('不想毕业','200004',18,1,'2000-09-01',2);-- 成绩表insertintoscore(score,student_id,course_id)values(70.5,1,1),(98.5,1,3),(33,1,5),(98,1,6),(60,2,1),(59.5,2,5),(33,3,1),(68,3,3),(99,3,5),(67,4,1),(23,4,3),(56,4,5),(72,4,6),(81,5,1),(37,5,5),(56,6,2),(43,6,4),(79,6,6),(80,7,2),(92,7,6);-- 创建考试成绩表练习表DROPTABLEIFEXISTSexam;CREATETABLEexam(idbigint,nameVARCHAR(20),chineseDECIMAL(4,1),mathDECIMAL(4,1),englishDECIMAL(4,1));-- 插入测试数据INSERTINTOexam(id,name,chinese,math,english)VALUES(1,'唐三藏',67,98,56),(2,'孙悟空',87.5,78,77),(3,'猪悟能',88,98,90),(4,'曹孟德',82,84,67),(5,'刘玄德',55.5,85,45),(6,'孙权',70,73,78.5),(7,'宋公明',75,65,30);

3.存储过程的语法

  1. 创建存储过程
CREATEPROCEDURE[存储过程名(参数列表)]BEGIN-- sql语句...(可以有多条)END

例如 计算上述表中所有学生的总分

CREATEPROCEDUREp_calAvg()BEGINSELECTname,chinese+math+englishastotalfromexam;END


可以看到存储过程已经创建成功了,也可以在navicat图形化界面工具里,对应表下的函数中 看到已经创建的存储过程

有一点需要注意,目前这里执行的创建存储过程 是在navicat图形化界面中执行的,如果是在cmd命令行中执行,会报错,如下图所示

原因:MySQL 会把分号 ; 当成 “结束命令”,当执行begin中的sql语句时,遇到;,MySQL 提前截断命令,导致MySQL执行的命令不完整,因此创建失败
解决办法就是 修改MySQL的结束标识符

DELIMITER//CREATEPROCEDUREp_calAvg()BEGINSELECTname,chinese+math+englishastotalfromexam;END//DELIMITER;

这个SQL语句的作用是先把MySQL的结束标识符改成//,然后创建好存储过程之后,再修改回

2.调用存储过程 语法:

call[存储过程名(参数列表)]
CALLp_calAvg();


3.查看指定数据库中创建的存储过程

SELECT*frominformation_schema.ROUTINESWHEREROUTINE_SCHEMA='数据库名';
SELECT*frominformation_schema.ROUTINESWHEREROUTINE_SCHEMA='topic01';


4.创建存储过程的SQL
语法:

SHOWCREATEPROCEDURE[存储过程];
SHOW CREATE PROCEDURE p_calAvg;


5.删除存储过程

DROPPROCEDURE[存储过程名];
DROPPROCEDUREp_calAvg;


需要注意的是,存储过程并非“万能工具”。它的优势在于复用性和高效性,但也存在调试不便、跨数据库兼容性差的短板。在实际开发中,我们需根据业务场景合理选择:复杂的数据库层逻辑、高频复用的SQL片段,适合用存储过程封装;而简单的单条查询、需要灵活调整的逻辑,直接编写SQL可能更便捷。

http://www.jsqmd.com/news/424727/

相关文章:

  • 救命神器!自考人必备的AI论文网站 —— 千笔·专业学术智能体
  • 2026年大棚棉被工厂推荐,专注大棚保温被多年生产经验 - 品牌鉴赏师
  • 2026 年 3 月 GEO 服务商权威榜单|TOP5 实力对比与企业选型指南 - 速递信息
  • 实测才敢推AI论文写作软件 千笔·专业学术智能体 VS 笔捷Ai 本科生必备
  • 2026 年 3 月 GEO 服务商深度盘点:TOP5 哪家更适合企业长期合作? - 速递信息
  • 研究生必看!人气爆表的AI论文网站 —— 千笔AI
  • 2026别错过!AI论文工具 千笔AI VS 万方智搜AI,MBA写论文神器!
  • 2026年双梁门式起重机好用的品牌排名,靠谱厂家推荐 - 工业品网
  • GEO 驱动增长:上海智推时代官方合作通道直达 - 速递信息
  • 2026年蚌埠护理专业学校怎么选择,权威院校全梳理 - 工业设备
  • 实测才敢推!8个降AI率软件降AIGC网站:专科生必看的降AI率工具测评与推荐
  • 聊聊2026年河南好用的全包家装公司,郑州派轩装修公司口碑出众 - myqiye
  • 论文写不动?AI论文写作软件 千笔写作工具 VS 灵感ai
  • 新疆酒店设计装修服务多少钱,有哪些好用的品牌推荐? - mypinpai
  • 2026寻找性价比高的温度记录仪品牌适合电子行业的有哪些 - 工业品牌热点
  • 2026生物饲料水分测定仪供应商推荐,满足不同需求 - 工业品网
  • 母线槽产品类型研究分析报告 - 速递信息
  • 聊聊合肥电子商务学校服务有哪些,哪家权威值得关注 - 工业设备
  • 分析2026年靠谱的电源管理芯片厂家,价格如何 - 工业推荐榜
  • 2026年河南售后完善的家装品牌企业推荐,帮我找靠谱家装公司 - myqiye
  • 我做了个 Codex 账号切换器:终于不用担心token用量了
  • 2026年度新疆酒店设计服务推荐,新疆匠之初装饰设计专业靠谱 - mypinpai
  • 总结华夏游乐公司,推荐产品有哪些,在全国服务咋样? - 工业品网
  • 2026 年 3 月 上海智推时代:官方联系方式与合作流程 - 速递信息
  • 2026 GEO 优化服务商 TOP10 推荐:企业 AI 流量布局核心指南 - 速递信息
  • 2026年南方网通靠谱吗,了解服务态度和合作伙伴是关键 - 工业品牌热点
  • 聊聊襄阳全纸桶设备精密型厂家,哪家口碑好价格合理 - myqiye
  • 2026年选购合适的私募股权基金律所指南,知名品牌来推荐 - 工业推荐榜
  • 2026年RTO厂家怎么选?掌握这些方法不迷茫,沸石转轮+CO/除尘器/活性炭箱/滤筒除尘器,RTO厂家推荐榜单 - 品牌推荐师
  • 分析2026年海南别墅酒窖定制,哪个品牌口碑好 - 工业品牌热点