MySQL建立索引,觸發器
創建索引:
ALTER TABLE <表名> ADD INDEX (<字段>);
>ALTER TABLE `table_name` ADD PRIMARY KEY (`column`); 添加PRIMARY KEY(主鍵索引)
>ALTER TABLE `table_name` ADD UNIQUE (`column`); 添加UNIQUE(唯一索引)
>ALTER TABLE `table_name` ADD INDEX index_name (`column`) 添加INDEX(普通索引)
>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 添加FULLTEXT(全文索引)
>ALTER TABLE `table_name` ADD INDEX index_name (`column1`,`column2`,`column3`) 添加多列索引
>describe tbale_name; 查看表結構信息
>drop index index_name on table_name; drop刪除索引
>alter table table_name drop index index_name; alter drop刪除索引
>alter table table_name drop primary key; alter刪除索引
創建觸發器:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt;
trigger_name: 觸發器的名稱
tirgger_time: 觸發時機,為BEFORE或者AFTER
trigger_event: 觸發事件,為INSERT(INSERT,LOAD DATA,REPLACE)、DELETE(DELETE,REPLACE)或者UPDATE
tb_name: 表示建立觸發器的表名
trigger_stmt: 觸發器的程序體,可以是一條SQL語句或者是用BEGIN和END包含的多條語句
BEFORE和AFTER參數指定了觸發執行的時間,在事件之前或是之後
FOR EACH ROW 表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器
MySQL可以創建以下六種觸發器:
BEFORE INSERT, BEFORE DELETE, BEFORE UPDATE
AFTER INSERT, AFTER DELETE, AFTER UPDATE
drop trigger trigger_name; #刪除觸發器
show triggers; #查詢觸發器
創建有多個執行語句的觸發器
CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
ON 表名 FOR EACH ROW
BEGIN
執行語句列表,以; 分隔
END
在BEGIN...END語句中定義變量,但是只能在BEGIN...END內部使用:
DECLARE var_name var_type [DEFAULT value] character set utf8; #定義變量,可指定默認值
SET var_name = value; #給變量賦值
tips:MySQL特殊符號;在觸發器中存在沖突,采用在觸發器前後單獨執行 DELIMITER ||(將結束符號定義為||)和DELIMITER ;(將結束符號還原為;)。
MySQL建立索引,觸發器