always chase after what I like, but never forget what I dream of."

索引和触发器操作

索引

在基本表上建立一个或多个索引,可以提供多种存取路径,加快查找速度。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;

 

posted @ 2017-11-12 15:22  zx1116  阅读(650)  评论(0编辑  收藏  举报

always chase after what I like, but never forget what I dream of."