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命令来处理。改变查询结尾定界符;(比如改变为//)使得; 可被用在子程序体中。


 

posted @ 2017-03-10 19:59  Jondam  阅读(1354)  评论(0编辑  收藏  举报