数据库编程

本文介绍了SQL存储过程的创建、查询、调用与删除方法,并详细解释了参数类型及其应用实例。此外,还探讨了索引的概念、优缺点及不同类型,包括BTree、Hash、R-Tree和全文索引等。

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

一、存储过程

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

图示

image-20201226111113411

二、触发器

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 索引的概念

索引:数据库除了为数据提供存储和查询的功能之外,还一并维护着具有特定结构数据结构容器,这些数据结构是为了给数据库提供高效的查询方式,而这些维护着的数据结构就称为索引;索引的本质是数据结构。

图示

image-20201226143352391

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值