一.存储引擎
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将表中的数据存储在内存中,速度较快。
功能 | MyISAM | MEMORY | InnoDB |
---|---|---|---|
存储限制 | 256TB | RAM | 64TB |
支持事务 | NO | NO | YES |
支持全文索引 | YES | NO | NO |
支持树索引 | YES | YES | YES |
支持哈希索引 | NO | YES | NO |
支持数据缓存 | NO | N/A | YES |
支持外键 | NO | NO | YES |
二.存储程序
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);