一、存储过程
1.1 创建存储过程
-- 创建,关键字procedure,没有返回值数据类型,也没有返回值create procedure 存储过程名称(参数列表)begin 编写存储过程的名称;end
1.2 查询存储过程
-- 查询所有的存储过程show procedure status;-- 查询自定义的存储过程,可以使用模糊查询show procedure status like "%%";
1.3 调用存储过程
-- 调用call 存储过程名字();
1.4 删除存储过程
-- 删除drop procedure 存储过程名称;
1.5 存储过程参数问题
-
参数的形式:参数类型 参数名 数据类型
-
参数类型:
1)in:将存储过程外面的变量传递给存储过程里面使用
2)out:将存储过程里面的变量,传递给存储过程外面使用
3)inout:即可以将存储过程外面的值传递给里面使用,也可以将存储过程里面的值传递到外面。
举例说明
-- 定义存储过程
create procedure pro2(in a int,out b int,inout c int)
begin
-- 查询形式参数的值
select a,b,c;
-- 查询一次全局变量的值
select @num1,@num2,@num3;
-- 设置形式参数a,b,c的值
set a = 10;
set b = 20;
set c = 30;
-- 查询一次形式参数的值
select a,b,c;
-- 再次查询全局变量
select @num1,@num2,@num3;
end
图示
二、触发器
2.1 创建触发器
-- 创建触发器语法create trigger 触发器名称 触发时机 触发事件 on 表名 for each rowbegin 触发器的代码;end-- 触发时机:AFTER、BEFORE-- 触发事件:INSERT、UPDATE、DELETE-- 一张表最多有6个触发器
举例:购买商品生成订单
create trigger tri2 after insert on t_order for each rowbegin -- 当触发器触发了,说明订单表中有了新增的数据,将相应的商品表数量的数据较少 update t_product set number = number - new.buy_number where p_id = new.o_p_id;end
2.2 查询触发器
-- 查询触发器show triggers;
2.3 删除触发器
-- 删除drop trigger 触发器名称;
三、索引
3.1 索引的概念
索引:数据库除了为数据提供存储和查询的功能之外,还一并维护着具有特定结构数据结构容器,这些数据结构是为了给数据库提供高效的查询方式,而这些维护着的数据结构就称为索引;索引的本质是数据结构。
图示
3.2 索引的优缺点
-
优点:
1、会将要查询的字段生成索引,提高查询效率,降低数据库的IO资源。
2、在生成数据结构的时候,会对数据进行排序,省去排序的消耗。
-
缺点:
1、因为生成的索引只记录一个字段,已经将该实体的内容所在地址放到数据结构中,占用内存。
2、如果数据库做了增加、删除和修改的操作,数据库除了操作数据之外,还需要额外的维护相应的索引数据结构,因此降低增、删、改效率。
3.3 索引的分类
1)BTree索引:对于mysql所有的存储引擎都支持BTree索引,mysql默认的存储引擎innoDB支持B+Tree树索引。
2)Hash索引:支持该索引的存储引擎为Memory。
3)R-Tree索引:支持该索引的存储引擎为MyISAM。
4)Full-text索引:全文索引,存储引擎MyISAM支持,mysql默认存储引擎innoDB在版本5.7以后也支持。
在mysql中,用的最多的是Btree索引,在默认存储引擎也是InnoDB。
3.4 BTree索引分析
图示
3.5 索引的操作
1)创建索引:
create index 索引名称 on 表名(列名);
2)查询索引
show index from t_user;
3)刪除索引
drop index ind1 on t_user;
1)创建索引:
create index 索引名称 on 表名(列名);
2)查询索引
show index from t_user;
3)刪除索引
drop index ind1 on t_user;