索引和触发器操作

Posted zx1116

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引和触发器操作相关的知识,希望对你有一定的参考价值。

索引

在基本表上建立一个或多个索引,可以提供多种存取路径,加快查找速度。SQL新标准不主张使用索引,而是以在创建表时直接定义主键,一般系统会自动在主键上建立索引。

在特殊需要时,建立和删除索引由数据库管理员(DBA)或表的属主负责完成。

 

SQL中索引一般格式为:

create [unique] [cluster] index <索引名> on <表名> (<列名1> [asc|desc], <列名2> [asc|desc], ...)

 

ps:

unique表示唯一索引,即此索引的每一个索引值只对应唯一的数据记录。cluster表示聚簇索引,即索引项的顺序与表中记录的物理顺序一致的有序索引。一个基本表上最多只能建立一个聚簇索引。对于经常更新的列不宜建立聚簇索引。

 

mysql支持的索引:
B型树索引(BTREE)-- InnoDB和MyISAM存储引擎支持
哈希索引(HASH)    -- MEMORY存储引擎支持

 

方式1:创建表时创建普通索引

imageimage

 

方式2:在已经存在的表上创建普通索引

imageimage

 

方式3:通过ALTER  TABLE创建普通索引

 

删除索引:

DROP INDEX 索引名 ON 表名;

 

触发器:

触发器:

实现由一些表事件触发的某个操作。不是程序调用,不是手工启动,而是由事件触发。用于在表发生更改时,自动进行一些处理。

触发语句:INSERT/UPDATE/DELETE。其他SQL语句不会激活触发器

 

创建触发器:

CREATE TRIGGER trigger_insert BEFORE INSERT ON student FOR EACH ROW INSERT INTO student_new SELECT * FROM student;

 

创建包含多条执行语句的触发器

DELIMITER $$ --将结束符号设置为$$ CREATE TRIGGER trigger_update_multi BEFORE UPDATE ON course FOR EACH ROW BEGIN INSERT INTO student (sno, sname) VALUES(111111,’ZHIBO’); INSERT INTO student (sno, sname) VALUES(222222,’HENRY’); END $$ DELIMITER ; --将结束符号设置为;

 

查看触发器

SHOW TRIGGERS;

 

删除触发器:

DROP  TRIGGER  trigger_name;

 

以上是关于索引和触发器操作的主要内容,如果未能解决你的问题,请参考以下文章

索引和触发器操作

CSIC_716_20191216事务视图触发器存储过程索引

MySQL高级篇——索引视图存储过程和函数触发器的相关概念及操作

选择选项卡片段时触发啥事件

使用触发器对学生表操作进行日志记录

MySQL触发器