邹瑞20201028

总结

存储过程

存储过程类似于JAVA语言中的方法,需要先定义,使用时需要调用。存储过程可以定义参数,参数分为 IN、OUT、INOUT 类型三种类型。IN类型的参数表示接收调用者传入的数据,OUT类型的参数表示向 调用者返回数据,INOUT类型的参数既可以接收调用者传入的参数,也可以向调用者返回数据。
有输入输出参数,可以声明变量,有if/else, case when,while等控制语句,通过编写存储过程,可以实 现复杂的逻辑功能; 函数的普遍特性:模块化,封装,代码复用; 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤

创建存储过程的语法格式

create procedure 存储过程名(参数1,参数2,…)

begin 存储过程语句块;

end;

例子

DROP PROCEDURE IF EXISTS proc_adder;

CREATE PROCEDURE proc_adder(IN a int, IN b int, OUT sum int)

BEGIN

​ if a is null then set a = 0;

​ end if; if b is null then set b = 0;

​ end if;

​ set sum = a + b;

#select a + b into sum

END;

格式

设置值 set @b = 5;

调用 call proc_adder(2, @b, @sum);

显示 select @sum ;

触发器

触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整 性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而 是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行

触发器具有以下特点:

  1. 与表相关联
    触发器定义在特定的表上,这个表称为触发器表。
  2. 自动激活触发器 当对表中的数据执行 INSERT、UPDATE 或 DELETE 操作时,如果对表上的这个特定操作定义了触发 器,该触发器自动执行,这是不可撤销的。
  3. 不能直接调用
    与存储过程不同,触发器不能被直接调用,也不能传递或接受参数。
  4. 作为事务的一部分
    触发器与激活触发器的语句一起做为对一个单一的事务来对待,可以从触发器中的任何位置回滚。

创建触发器

触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:

​ 1.监视地点(table)

​ 2.监视事件(insert/update/delete)

​ 3.触发时间(after/before)

​ 4.触发事件(insert/update/delete)
语法

CREATE TRIGGER 触发器名称 触发时机 触发事件

ON 表名称

FOR EACH ROW

BEGIN

语句

END;

使用触发器实现用户注册业务

DELIMITER $$

CREATE TRIGGER tr_register

AFTER INSERT ON userinfo FOR EACH ROW

BEGIN

INSERT INTO userdetails(id) VALUES(NEW.id);

END $$

新增一条数据就会触发 tr_register

insert into userinfo (userName, userPass) values('张三', '123456');

注意

在某张表的触发器中,不能再进行对此表的操作。比如:给 Userinfo 表添加一个触发器 tr_register ,在此触发器中执行内容不能是再对 Userinfo 表进行操作了。否则在触发器被激活时, 会报1442错误。

索引

索引类似于书的目录,在一本书前面加上目录,查找内容时不必逐页翻阅就能够快速地找到所需的内 容。借助索引,执行查询时不必扫描整个表就能够快速地找到所需要的数据。

使用索引

CREATE INDEX 索引名称 ON 表名称(字段名)

创建索引CREATE INDEX ix_UserInfo_UserName ON userinfo(userName);

修改表(添加索引)

ALTER table userinfo ADD INDEX ix_UserInfo_UserName(userName)

测试索引EXPLAIN SELECT * FROM userinfo WHERE userName='林冲';

索引优缺点

索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度 索引的优点是可以提高检索数据的速度

索引的缺点是创建和维护索引需要耗费时间
索引可以提高查询速度,会减慢写入速度。索引并不是越多越好,索引固然可以提高相应的 select 的效 率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样 建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常 使用到的列上建的索引是否有必要。

心得

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1