MariaDB数据库函数、存储过程和触发器
mysql
-----------------------------------------------------------------------------------------------------------------------------------------------
sql
<1>系统函数:系统自带的函数,能够实现查询语句中的某些要求,好比select avg(Age) from students;,这里avg()就是系统函数ide
CREATE FUNCTION function_name(orm
PARAMETER_NAME type,[PARAMETER_NAME type]...)blog
RETURNS {STRING|INTERGER|REAL}事件
注意:参数PARAMETER_NAME type能够有多个,也能够没有参数;必须有且只有一个返回值,返回的是{字符串|整数|实数}
SHOW CREATE FUNCTION function_name
SELECT function_name(parameter_value,...)
<1>SET parameter_name= value[,parameter_name= value...]
<2>SELECT INTO parameter_name,好比说
SELECT COUNT(id) FROM tdb_nameINTO x;
注意:函数调用只能在SQL语句中被select调用,不能单独使用
CREATE PROCEDURE sp_name([ proc_parameter[,proc_parameter ...]])
其中:proc_parameter: [IN|OUT|INOUT] parameter_nametype
其中IN表示输入参数,OUT表示输出参数,INOUT表示既能够输入也能够输出;param_name表示参数名称;type表示参数的类型
CALL sp_name([ proc_parameter[,proc_parameter...]])
说明:当无参时,能够省略"()",当有参数时,不可省略"()”
ALTER语句修改存储过程只能修改存储过程的注释等可有可无的东西,不能修改存储过程体,因此要修改存储过程,方法就是删除重建
<1>存储过程把常常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当须要时从数据库中直接调用,省去了编译的过程
<3>存储过程通常独立的来执行,而函数每每是做为其余SQL语句的一部分来使用
CASE:用来进行条件判断,可实现比IF语句更复杂的条件判断
REPEAT:有条件控制的循环语句。当知足特定条件时,就会跳出循环语句
REPEAT SET @sum = @sum+@i; SET @i= @i+ 1;
须要注意的是,不管函数仍是自定义过程当中,定义完参数以后,在编写参数功能以前,中间有一个BEGIN代表开始,结尾也都有一个END
触发器的执行不是由程序调用或者手动启动的,而是由事件来触发、激活从而实现执行
[DEFINER = { user | CURRENT_USER }]
trigger_time:{ BEFORE | AFTER },表示在事件以前或以后触发
trigger_event::{ INSERT |UPDATE | DELETE },触发的具体事件
查询系统表information_schema.triggers的方式指定查询条件,查看指定的触发器信息。
mysql> USE information_schema;
mysql> SELECT * FROM triggers WHERE trigger_name='trigger_student_count_insert';
DROP TRIGGER trigger_name;