MySQL 存储程序之存储过程

本文深入探讨MySQL的存储引擎,如InnoDB、MyISAM和MEMORY的特点与区别,以及它们的功能对比。同时,介绍了存储程序的概念,包括存储过程、存储函数和触发器,并提供了创建和使用的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.存储引擎

1.存储引擎简介

是MySQL的核心,一组软件包括缓存软件,语法语义分析,解析的软件等,不同的存储引擎提供不同的存储机制,索引技巧,锁定水平等功能。可以根据不同的功能来设置不同的存储引擎。

InnoDB:事务性数据库的首选,执行安全性数据库,行锁定和外键。

显示支持的存储引擎:show engines;

修改默认存储引擎:my.ini -> default -storage-engine=InnoDB

在我的前面数据库基础章节章节中讲到MySQL的历史,开始到4.0版本MySQL使用的是MyISAM(起先叫ISAM),4.0开始支持InnoDB存储引擎,而且后来被证明是对于MySQL的最佳的事务存储引擎(5.1版本开始支持事务管理),但是由于在当时即2008年先后经历Sun公司和Oracle公司的收购,所以一直延迟到5.5版本才正式将InnoDB设置为默认的MySQL存储引擎(InnoDB已经被Oracle早被Oracle收购)。

2.常规用存储引擎与比较

MyISAM,InnoDB,MEMORY

InnoDB是事务型数据库的首选,执行安全性数据库,行锁定和外键。mysql5.5之后默认使用。

MyISAM插入速度和查询效率较高,但不支持事务。

MEMORY将表中的数据存储在内存中,速度较快。

功能MyISAMMEMORYInnoDB
存储限制256TBRAM64TB
支持事务NONOYES
支持全文索引YESNONO
支持树索引YESYESYES
支持哈希索引NOYESNO
支持数据缓存NON/AYES
支持外键NONOYES

二.存储程序

1.基本概念

一组存储和执行在数据库服务器端的程序。存储程序总是在服务器的进程或者线程的内存中执行的。

2.存储程序分类

存储过程:有输入输出参数,可以执行一组sql指令。

存储函数:有一个返回值,可以对sql进行有效扩展。

触发器:指事件响应,比如执行insert语句后执行另外一个动作。

3.存储程序
存储于服务端的程序,一般在服务端的进程或者线程中运行
优缺点:
	优点:效率上的提高,简化开发
	缺点:占用服务端资源,数据迁移时也要把这些存储过程迁移过去。

三.存储过程

1.无参数存储过程
-- 查询所有记录
delimiter //               -- 定义结束标识
create procedure sel_user()
BEGIN
  select username from user;
end //;

-- 调用
call sel_user()
2.带参数存储过程之按模式传递参数

参数的模式IN, OUT, INOUT,默认是输入模式,即IN模式

eg1:IN模式传参
-- 根据员工编号来查询名称
delimiter //               -- 定义结束标识
create procedure sel_name(eno int)
--eno int 是默认输入的简写:in eno int
begin
	select ename from mktest.emp where empno=eno;
end //;

-- 调用
call sel_name(7788)
eg2:INOUT模式传参
delimiter //;
create procedure sel_name3(inout v_nj varchar(20))
begin
	select job from mktest.emp where ename=v_nj;
end //;

-- 外部定义变量,查看变量:select @job;
set @job='smith';
-- 调用
call sel_job(@job)
3.流程控制
delimiter //
create procedure score(s int)  
begin
	declars v_level varchar(10);   -- 内部定义变量v_level
    if s>80 then
    	set v_level='A';   -- 变量赋值
    elseif s>=60 then
    	set v_level='B';
    else
    	set v_level='C';
	endif
	select v_level   -- 查看变量的值
end //;

--调用
call score(80);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值