一、索引
索引是一种将数据库中单列或多列的值进行排序的结构,应用索引可以大幅度提升查询的速度。
注:不同的存储引擎定义每个表的最大索引数和最大索引长度。所以存储引擎对每个表至少支持16个索引。总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。索引有两种存储类型,包括B型树索引和哈希索引,其中B型树是默认索引方法。
1.1索引的分类
MySQL的索引包括普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。
1.1.1普通索引
普通索引,即不应用任何限制条件的索引,该索引可以是任何数据类型中创建。
1.1.2唯一索引
使用UNIQUE 参数可以设置唯一索引。创建该索引时,索引的值必须唯一,通过唯一索引,可以快速定位某条记录,主键是一种特殊唯一索引。
1.1.3全文索引
使用FULLTEXT参数可以设置索引为全文索引。全文索引只能创建在CHAR、VARCHAR或者TEXT类型的字段上。
1.1.4单列索引
单列索引即只对应一个字段的索引,其可以包括上述三种索引方式。应用该索引的条件只需要保证该索引值对应一个字段即可。
1.1.5多列索引
多列索引是在表的多个字段上创建一个索引。该索引指向创建时对应的多个字段,用户可以通过这几个字段进行查询。要想应用该索引,用户必须使用这些字段中第一个字段。
1.1.6空间索引
使用SPATIAL参数可以设置索引为空间索引。空间索引只能建立在空间数据类型上,MySQL中只有MyISAM存储引擎支持空间检索,而且索引的字段不能为空。
1.2索引操作
1.2.1在建立数据表时直接创建索引
基本语法结构如下:
create table 表名(
属性名 数据类型[约束条件],
属性名 数据类型[约束条件],
.......
属性名 数据类型[约束条件]
[UNIQUE | FULLTEXT | SPATIAL]
INDEX KEY
[别名](属性1[长度] [ASC | DESC])
);
其中,属性名后的属性值,其含义如下:
- UNIQUE:可选参数,表明索引为唯一索引
- FULLTEXT:可选参数,表明索引为全文索引
- SPATIAL:可选参数,表明索引为空间索引
INDEX 和KEY 参数用于指定字段索引,使用其中一种即可;别名为可选参数,用于给创建的索引取新名称。
别名的参数如下:
- 属性名1:指索引对应的字段名称,该字段必须被预先定义。
- 长度:可选参数,其指索引的长度,必须是字符串类型才可以使用
- ASC|DESC:可选参数,ASC表示升序排列,DESC表示降序排列
1.2.2在已建立的数据表中创建索引
命令结构如下:
create [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
ON 表名(属性[length] [ASC | DESC]);
命令的参数说明:
- 可选参数,指定索引类型,包括UNIQUE(唯一索引)、FULLTEXT(全文索引)、SPATIAL(空间索引)。
- 属性参数,指定索引对应的字段名称。该字段必须已经存在要操作的数据表中
- length为可选参数,用于指定索引长度
- ASC和DESC参数,指定数据表的排列顺序。
--创建普通索引
create INDEX 索引名 ON 表名(字段名);
--创建唯一索引
create UNIQUE INDEX 索引名 ON 表名(字段名);
--创建全文索引
create FULLTEXT INDEX 索引名 ON 表名(字段名);
--创建单列索引
create INDEX 索引名 ON 表名(字段名(长度));
--创建多列索引
create INDEX 索引名 ON 表名(指字段名1,字段名2,.....);
--创建空间索引
create SPATIAL INDEX 索引名 ON 表名(字段名);
1.2.3修改数据表结构添加索引
基本结构如下:
ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名(属性名[length] [ASC | DESC ]);
命令的参数说明:
- 可选参数,指定索引类型,包括UNIQUE(唯一索引)、FULLTEXT(全文索引)、SPATIAL(空间索引)。
- 属性参数,指定索引对应的字段名称。该字段必须已经存在要操作的数据表中
- length为可选参数,用于指定索引长度
- ASC和DESC参数,指定数据表的排列顺序。
--添加普通索引
alter table 表名 add index 索引名(字段名);
--添加唯一索引
alter table 表名 add unique index 索引名(字段名);
--添加全文索引
alter table 表名 add fulltext index 索引名(字段名);
--添加空间索引
alter table 表名 add spatial index 索引名(字段名);
--添加单列索引
alter table 表名 add index 索引名(字段名(长度));
--添加多列索引
alter table 表名 add index 索引名(字段名1,字段名2,....);
1.2.4删除索引
结构如下:
drop index 索引名 on 表名;
1.2.5查看表结构
结果由SQL显示,结构如下:
show create table 表名
二、视图
2.1视图的概念
视图是一个虚拟表,是从数据中一个或多个表中导出的表,内容由查询定义。
视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:一种是安全原因,视图可以隐藏一些数据;另一种原因是可以使复杂的查询易于理解。
视图的作用:简单性、安全性、逻辑数据独立性
2.2视图的操作
2.2.1查看创建视图的权限
结构如下:
select selete_priv,create_view_priv from mysql.user where user='用户名';
- select_priv属性表示用户是否具有select权限,Y表示拥有select权限,N表
- create_view_priv属性表示用户是否具有create view(创建视图)权限
- '用户名'参数表示要查询是否拥有DROP权限的用户
2.2.2创建视图
结构如下:
create [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
view 视图名[(属性清单)]
as select语句
[with [cascaded|local] check option];
- ALGORITHM是可选参数,表示视图选择的算法
- ‘视图名’参数表示要创建的视图名称
- ‘属性清单’是可选参数,指定视图中各个属性的名称,默认情况下与select一句中查询的属性相同
- select语句参数是一个完整的查询语句,表示从某个表中查出某些满足条件的记录,将这些记录导入视图中
- with check option是可选参数,表示更新视图时要保证在该试图的权限范围之内。
创建视图的注意事项:
- 创建视图的用户需要具有创建视图的权限,若加入了[or replace]时,用户需要具有删除视图权限
- select语句不能包含from子句中的子查询
- select语句不能引用系统或用户变量
- select语句不能引用预处理语句参数
- 在存储子程序内,定义不能引用子程序参数或局部变量。
- 在定义中引用的表或视图必须存在
- 不能创建临时视图
- 视图中定义命名的表必须存在
- 不能将触发程序和视图关联
- 在视图中允许使用排序,但是若视图具有自己的排序,自己写的排序将被忽略
2.2.3查看视图
结构如下:
DESCRIBE 视图名;
show table status like '视图名';
show create view 视图名;
2.2.4修改视图
create or replace [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
view 视图名[(属性清单)]
as select语句
[with [cascaded|local] check option];
或
alter view [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]view view_name [属性清单]
as select语句 [with [cascaded | local ] check option];
2.2.5更新视图
对视图的更新其实就是对表的更新,更新视图通过视图来进行插入、更新和删除表中的数据
更新视图的限制(不能更新):
- 包含count()、sum()、max()、min()等函数
- 视图中包含union、union all 、 distinct、group by、having等关键字
- 常量视图
- 视图中select包含子查询
- 由不可更新的表创建的视图
- 创建视图时,ALOGRITHM为TMEPTABLE类型
- 视图对应的表上存在没有默认值的列,且该列没有包含在视图里。
2.2.6删除视图
结构如下:
drop view if exists <视图名> [restrict | cascade];
注:
如果该视图导出了其他视图,则使用CASCADE级联删除。
三、数据完整性约束
3.1定义完整性约束
数据完整性是指数据的正确性和相容性。
3.1.1实体完整性
实体是一个数据对象,是指客观存在并可以相互区分的事物。实体完整性规则是指关系的主属性,即主码(主键)的组成不能为空,也就是关系的主属性不能是空值。
3.1.1.(1)主键约束
主键可以是表中的某一列,也可以是表中多个列所构成的一个组合。其中,由多个列组合而成的主键也称复合主键。在MySQL中,主键列必须遵守以下规则。
- 每一个表只能定义一个主键。
- 唯一性原则。主键的值,也称键值,必须能够唯一标识表中的每一行记录,且不能为空。
- 最小化规则。复合主键不能包含不必要的多于列。
- 一个列名在复合主键的列表只能出现一次。
- 作为列的完整性约束。在表的某个列的属性定义时,加上关键字PRIMARY KEY实现。
实例:
create table tb_user(
id int auto_increment PRIMARY KEY, ----主键
user varchar(30) not null,
password varchar(30) not null,
createtime datetime
);
- 作为表的完整性约束。在表的所有列的属性定义后,加上PRIMARY KEY(index_col_name,...)实现。
实例:
create table tb_student(
id int auto_increment,
name varchar(30) not null,
sex varchar(2),
classid int not null,
birthday date,
primary key(id,classid)
);
3.1.1(2)候选键约束
候选键可以是表中的某一列,也可以是表中多个列所构成的一个组合,但是候选键的值必须是唯一的,且不能为空。
在MySQL中,候选键与主键之间存在以下两点区别:
- 一个表只能创建一个主键,但可以定义若干个候选键
- 定义主键约束时,系统会自动创建primary key索引,而定义候选键约束时,系统会自动创建UNIQUE索引。
实例:
create table tb_user1(
id int auto_increment UNIQUE,
user varchar(30) not null UNIQUE,
password varchar(30) not null,
createtime timestamp DEFAULT CURRENT_TIMESTAMP
);
3.1.1(3)参照完整性
参照完整性规则就是定义外码(外键)和主码(主键)之间的引用规则,它是对关系间引用数据的一种限制。MySQL有两种常见的引擎类型(MyISAM和InnoDB),目前只有InnoDB支持外键。InnoDB引擎类型中声明外键的基本语法格式如下:
[CONSTRANINT [SYMBOL]]
FOREIGN KEY (index_col_name,...) reference_definition
reference_definition的基本语法如下:
REFERENCES tbl_name[(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ON DELETE reference_option]
[ON UPDATE reference_option]
index_col_name的语法格式如下:
col_name [(length)] [ASC | DESC ]
reference_option的语法格式如下:
RESTRICT | CASCADE |SET NULL | NO ACTION
参数说明如下:
- index_col_name:用于指定被设置为外键的列
- tbl_name:用于指定外键所参照的表名。
- col_name:用于指定被参照的列名。
- ON DELETE |ON UPDATE:指定参照动作相关的SQL语句。可为每个外键指定对应于DELETE语句和UPDATE语句的参照动作。
- reference_option:指定参照完整性约束的实现策略。
-
策略可选值 可选值 说明 RESTRICT 限制策略:当要删除或更新的参数被参照表中被参照列上,并在外键中出现的值时,系统拒绝对被参照表的删除或更新操作 CASCADE 级联策略:从被参照表中删除或更新记录行时,自动删除或更新参照表匹配的记录行。 SET NULL 置空策略:当从被参照表中删除或更新记录行时,设置参照表中与之对应的外键列的值为NULL。 NO ACTION 不采取实施策略:当一个相关的外键值在被参照表中,删除或更新被参照表中值的动作不被允许。该策略的动作语言与RESTRICT相同。 实例:
create table tb_student1(
id int auto_increment,
name varchar(30) not null,
sex varchar(2),
classid int not null,
birthday date,
remark varchar(100),
primary key (id),
foreign key (classid)--外键
references tb_class(id)--指向表的字段
on delete restrict--删除的规则
on update RESTRICt--更新的规则
);
设置外键时,通常需要遵守以下规则:
- 被参照表必须是已经存在的,或者是当前正在创建的表。
- 必须为被参照表定义主键。
- 必须在被参照表名后面指定列名或列名的组合。这个列或者列的组合必须是这个被参照表的主键或候选键。
- 外键中列的数目必须和被参照表中的列的数据相同。
- 外键中列的数据类型必须和被参照表的主键(或候选键)中的对应的列的数据类型相同。
- 尽管主键是不能包含空值的,但允许在外键中出现一个空值。
3.1.1(4)用户定义的完整性
MySQL支持非空约束、CHECK约束和触发器3中用户自定义完整性约束。先介绍非空约束和CHECK约束。
非空约束实例:
create table tb_class1(
id int(11) primary key auto_increment,
name varchar(45) not null,
remark varchar(100) default null
);
CHECK约束实例:
create table tb_student2(
id int primary key auto_increment,
name varchar(30) not null,
sec varchar(2),
age int not null check(age>6 and age<18),
remark varchar(100)
);
3.2完整性约束操作
3.2.1命名完整性操作
命名完整性约束的方式是在各种完整性约束的定义说明之前加上CONSTRAINT子句实现。语法格式如下:
CONSTRAINT<symbol>
[PRIMARY KEY 短语 | FOREIGN KEY 短语 | CHECK 短语]
参数说明:
- symbol:用于指定约束名称。
- PRIMARY KEY短语:主键约束。
- FOREIGN KEY短语:参照完整性约束。
- CHECK 短语:CHECK约束。
实例:
create table tb_student1a(
id int primary key auto_increment,
name varchar(30) not null,
sex varchar(2),
classid int not null,
birthday date,
remark varchar(100),
CONSTRAINT fk_classid FOREIGN key (classid)
REFERENCES tb_class(id)
on delete RESTRICT
on update RESTRICT
);
3.2.2删除完整性约束
在MySQL中,使用ALTER TABLE 语句,可以独立地删除完整性约束,而不会删除表本身,具体的语法格式如下:
DROP [FOREIGN KEY | INDEX |<symbol>] | [PRIMARY KEY]
参数说明:
- FOREIGN KEY:用于删除外键约束。
- PRIMARY KEY:用于删除主键约束。注:在删除主键的时候必须要再创建一个主键,否则不能删除成功。
- INDEX:用于删除候选键约束。
- symbol:要删除的约束名称。
实例:
alter table tb_student1a drop foreign key fk_classid;
3.2.3修改完整性约束(添加)
具体语法格式如下:
ADD CONSTRAINT <symbol> 各种约束
参数说明:
- symbol:为要添加的约束指定一个名称。
- 各种约束:定义各种约束的语句。
实例:
alter table tb_student1a
add constraint fk_classid foreign key (classid)
references tb_class(id)
on delete cascade --级联(当删除依赖后,自身也会删除)
on update cascade;
四、存储过程和存储函数
4.1创建存储过程和存储函数
在数据库系统中,为了保证数据的完整性、一致性,同时也为提高其应用性能,大多数据库常采用存储过程和存储函数技术,存储过程和存储函数经常是一组SQL语句的组合,这些语句被当成整体存入MySQL数据库服务中。
4.1.1创建存储过程
在MySQL中,创建存储过程的基本形式如下:
create procedure sp_name ([proc_parameter[,....]])
[characteristic...] routine_body
参数说明:
sp_name:存储过程的名称
proc_parameter:存储过程的参数列表
characteristic:指定存储过程的特性
routine_body:是SQL代码的内容,一般用begin .... and 来标识SQL代码的开始和结束
说明:proc_parameter参数有3部分组成,它们分别是输入输出类型、参数名称和参数类型。其形式为[ IN | OUT | INOUT ]param_name type。其中IN表示输出参数;OUOT表示输出参数;INOUT表示既可以输入也可以输出;param_name参数是存储过程参数名称;type参数是指定存储过程的参数类型,该类型可以为MySQL数据库的任意数据类型。
实例:
delimiter // ---结束符号更改为 //
create procedure proc_name(in parameter integer)---输入参数
begin
declare variable varchar(20);
if parameter =1 then
set variable ='MySQL';
else
set variable ='PHP';
end if ;
insert into tb(name) values(variable);
end;
//
create procedure count_of_student(out count_num int)--输出参数
reads sql data
begin
select count(*) into count_num from studentinfo;
end
//
4.1.2创建存储函数
创建存储函数的基本形式:
create function sp_name([func_paramter[,....]])
returns type
[characteristic] routine_body
参数说明:
sp_name:存储函数的名称
func_parameter:存储函数的参数列表
注:func_parameter可以由多个参数组成,其中每个参数均由参数名称和参数类型组成,其结构如下:
param_name type
returns type:指定返回值的类型
characteristic:指定存储过程的特性
routine_body:SQL代码的内容
实例:
delimiter //
set global log_bin_trust_function_creators =1 // --临时设置声明(如果长期使用在win中写在my.ini中;若是LINUX则写在my.cnf)
create function name_of_student(sid_id int)
returns varchar(50)
begin
return (select name from studentinfo where sid = sid_id);
end
//
4.1.3变量的应用
4.1.3(1)局部变量
声明局部变量的基本语法形式:
declare var_name[...] type [default value]
实例:
在begin和end之间
delimiter //
create procedure p1()
begin
declare x char(10) default 'outer';
begin
declare x char(10) default 'inner';
select x;
end;
select x;
end;
//
4.1.3(2)全局变量
关键字@
整个存储范围内
create procedure p2()
begin
set @t=1;
begin
set @t=2;
select @t;
end;
select @t;
end;
//
4.1.3(3)为变量赋值
MySQL中可以使用DECLARE关键字来定义变量。定义变量的基本语法如下:
DECLARE var_name(,...) type [DEFAULT value]
DECLARE是用来声明变量的;var_name参数是设置变量的名称,也可以同时设置多个变量;type参数用来指定变量的类型;DEFAULT value的作用是指定变量的默认值,不对该参数进行设置时,其默认值为NULL。
MySQL中可以使用SET关键字为变量赋值。SET语句的基本语法如下:
SET var_name=expr[,var_name=expr]...
SET关键字用来为变量赋值;var_name参数是变量的名称;expr参数是赋值表达式。一个SET语句可以同时为多个变量赋值,各个变量的赋值语句之间用“,”隔开。
实例:
SET mr_sotf=10;
另外,MySQL中还可以应用另一种方式为变量赋值。其语法结构如下:
select col_name[,....] into var_name[,...] from table_name where condition
其中col_name参数标识查询的字段名称;var_name参数是变量的名称;table_name参数为指定数据表的名称;condition参数为指定查询条件。
4.1.3(4)光标的运用
作用:可以逐条读取结果集中的记录
---声明光标
declare cursor_name cursor for select_statement
--打开光标
open cursor_name
--使用光标
fetch cursor_name into var_name[,var_name]...
--关闭光标
close cursor_name
实例:
create procedure proc_cur()
begin
--定义变量
declare user_id int;
declare user_name varchar(200);
declare done int;
--创建光标并存储数据
declare cur_test CURSOR for
select sid as user_id,name as user_name from studentinfo;
--光标中的内容执行完成后将done设置为1
declare continue handler for not found set done=1;
--打开光标
open cur_test;
--执行循环
posloop:loop
--判断是否结束循环
if done =1 then
leave posloop;
end if;
--取光标中的值
fetch cur_test into user_id ,user_name;
--执行更新操作
update studentinfo set name= concat(user_id,"-",user_name) where sid =user_id;
end loop posloop;
--释放光标
close cur_test;
end
//
4.2调用存储过程和存储函数
其结构如下:
--调用存储过程
call sp_name([parameter[,...]])
--调用存储函数
select function_name([parameter[,...]])
4.3查看存储过程和存储函数
show {procdure | function } status [like 'pattern'];
或
show create {procdure | function } sp_name;
区别:
show status:
- 只能查看存储过程或存储函数的名称、类型、定义者、修改时间等信息
- 不能查询存储过程或存储函数的具体定义
show create:
- 查看详细定义
实例:
show procedure status like 'count_of_student'//
show function status like 'name_of_student'//
show create procedure p1//
show create function name_of_student//
4.4修改存储过程和存储函数
语法形式如下:
alter {procedure | function } sp_name [characteristic ...]
characteristic:
{contains sql | no sql | reads sql data | modifies sql data}
| sql security {definer | invoker}
| comment 'string'
参数 | 说明 |
sp_name | 存储过程或存储函数的名称 |
characteristic | 指定存储函数的特性 |
contains sql | 表示子程序包含SQL语句,但不包含读写数据的语句 |
no sql | 表示子程序不包含SQL语句 |
reads sql data | 表示子程序中包含读数据的语句 |
modifies sql data | 表示子程序包含读写数据的语句 |
sql security{definer|invoker} | 指明权限执行。definer表示只有定义者可以执行;invoke表示调用者可以执行 |
comment 'string' | 是注释信息 |
实例:
alter procedure count_of_student
modifies sql data
sql security invoker;
//
4.5删除存储过程和存储函数
语法如下:
drop {procedure | function} [if exists] sp_name;
实例:
drop procedure count_of_student//
drop function name_of_student//
五、触发器
触发器是由MySQL的基本命令时间来触发某种特定操作,这些基本的命令由INSERT、UPDATE、DELETE等事件来触发某些特定操作。
5.1创建触发器
5.1.1创建单个执行语句的触发器
语法结构如下:
create trigger 触发器名称 before | after 触发事件
on 表名 for each row 执行语句
参数说明:
- 触发器名称用于指定要创建的触发器名字。
- 参数before 和 after用于指定触发器执行的时间。before指在触发时间之前执行触发语句;atfer表示在触发时间之后执行触发语句。
- 触发事件参数用于指定数据库作触发条件,其中包括INSERT、UPDATE、DELETE。
- 表名用于指定触发时间操作表的名称。
- for each row 表示任何一条记录上的操作满足触发事件都会触发该触发器。
- 执行语句指触发器被触发后执行的程序。
实例:
delimiter //
create trigger auto_save_time before insert
on studentinfo for each row
insert into timelog(savetime) values(now());
//
5.1.2创建具有多个执行语句的触发器
语法结构如下:
create trigger 触发器名称 before | after 触发事件
on 表名 for each row
begin
执行语句列表
end
实例:
create trigger delete_time_info after delete
on studentinfo for each row
begin
insert into timelog(savetime) values(now());
insert into timeinfo(info) values('deleteact');
end
//
5.2查看触发器
语法结构如下:
show trigger;
或
select * from information_schema.triggers;
或
select * from information_schema.triggers where trigger_name= '';
5.3执行触发器
在MySQL中,触发器按以下顺序执行:before触发器、表操作、after触发器操作,其中表操作包含常用的数据库操作命令,如INSERT、UPDATE、DELETE。
5.4删除触发器
语法结构如下:
drop trigger 触发器名称;
六、事件
6.1查看事件
查看事件的结构语句:
show variables like 'event_scheduler';
或
show processlist;
说明:若参数event_scheduler的值为off则为关闭;若参数event_scheduler的值为on则为开启。
6.2开启事件
开启事件一种是使用命令(在关闭MySQL后关闭),一种是修改my.ini配置文件。
set global event_scheduler=on;
或
在my.ini中添加如下配置:
event_scheduler=on
6.3创建事件
语句格式如下:
create
[DEFAINER = { user | CURRENT_USER }]
EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE ]
[ENABLE | DISABLE |DISABLE ON SLAVE ]
[COMMENT 'comment']
DO event_body;
子句 | 说明 |
DEFINER | 可选,用于定义事件执行时检查权限的用户 |
IF NOT EXISTS | 可选,用于判断要创建的事件是否存在 |
EVENT event_name | 必选,用于指定事件名 |
ON SCHEDULE schedule | 必选,用于定义执行的时间和时间间隔 |
ON COMPLETION [NOT] PRESERVE | 可选,用于定义事件是否循环执行,即是一次执行还是永久执行,默认为一次执行即 NOT PRESERVE |
ENABLE|DISABLE|DISABLE ON SLAVE | 可选,用于指定事件的一种属性。关键字ENABLE表示该事件活动的;关键字DISABLE表示该事件关闭的;关键字DISABLE ON SLAVE 表示事件是从机中关闭的 |
COMMENT 'comment' | 可选,用于定义事件的注释 |
DO event_body | 必选,用于指定事件启动时所要执行的代码。 |
在ON SCHEDULE子句中,参数schedule的值为一个AS子句,用于指定事件在某个时刻发生,其语法格式如下:
AT timestamp [+ INTERVAL interval]...
| EVEERY interval
[STARTS timestamp [+ INTERVAL interval]....]
[ENDS timestamp [+] INTERVAL interval....]
参数说明:
- timestamp:表示一个具体的时间点,后面加上一个时间间隔,表示在这个时间间隔后事件发生。
- EVERY子句:用于表示事件在指定事件区域内每间隔多长事件发生一次,其中STARTS子句用于指定开始事件;ENDS子句用于指定结束事件
- interval:表示一个从现在开始的事件,其值由一个数值和单位构成。
interval参数语法格式如下:
quantity {YEAR | QUARTER | DAY | HOUR | MINUTE|
WEEK | SECOND | YEAR_MONTH | DAY_HOUR
DAY_MINUTE | DAY_SECOND | HOUR_MINUTE
HOUR_SECOND | MINUTE_SECOND}
6.4修改事件
语句格式如下:
ALTER
[DEFINER={user | CURRENT_USER}]
EVENT event_name
[ON SCHEDULE schedule]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO new_event_name]
[ENABLE | DISABLE |DISABLE ON SLAVE]
[DO event_body]
6.5删除事件
语句格式如下:
drop event if exists 事件名;