MYSQL 常见的内置函数与自定义函数
MySQL 内置函数:
- 字符函数
- 数值函数
- 时间日期函数
常见的数值函数的使用:
1 select avg(tdb_goods) from tdb_goods; //求字段值的平均数
内置的求和函数:
1 select sum(goods_price) from tdb_goods; //求字段值的和
- 常见的日期函数举例
-
1 select now();
-
1 select current_timestamp();
用户自定义函数:
- 语法
20.2.1. CREATE PROCEDURE和CREATE FUNCTION CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body CREATE FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type func_parameter: param_name type type: Any valid MySQL data type characteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string' routine_body: Valid SQL procedure statement or statements
- 一个简单的求和函数
-
1 create function sum(num1 int,num2 int) 2 returns int 3 return (num1+num2)/2;
如果自定义函数中包含复合语句的话,就要使用begin..end语句。
1 [begin_label:] BEGIN 2 [statement_list] 3 END [end_label]
//
存储子程序可以使用BEGIN ... END复合语句来包含多个语句。statement_list 代表一个或多个语句的列表。statement_list之内每个语句都必须用分号(;)来结尾。
复合语句可以被标记。除非begin_label存在,否则end_label不能被给出,并且如果二者都存在,他们必须是同样的。
请注意,可选的[NOT] ATOMIC子句现在还不被支持。这意味着在指令块的开始没有交互的存储点被设置,并且在上下文中用到的BEGIN子句对当前交互动作没有影响。
使用多重语句需要客户端能发送包含语句定界符;的查询字符串。这个符号在命令行客户端被用delimiter命令来处理。改变查询结尾定界符;(比如改变为//)使得; 可被用在子程序体中。