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;