索引和触发器操作
索引
在基本表上建立一个或多个索引,可以提供多种存取路径,加快查找速度。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:创建表时创建普通索引
方式2:在已经存在的表上创建普通索引
方式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;