mysql库函数说明_MySQL变量结构函数介绍

--// 局部变量 ----------

-- 变量声明

declare var_name[,...] type [default value]

这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个default子句。值可以被指定为一个表达式,不需要为一个常数。如果没有default子句,初始值为null。

-- 赋值

使用 set 和 select into 语句为变量赋值。

- 注意:在函数内是可以使用全局变量(用户自定义的变量)

--// 全局变量 ----------

-- 定义、赋值

set 语句可以定义并为变量赋值。

set @var = value;

也可以使用select into语句为变量初始化并赋值。这样要求select语句只能返回一行,但是可以是多个字段,就意味着同时为多个变量进行赋值,变量的数量需要与查询的列数一致。

还可以把赋值语句看作一个表达式,通过select执行完成。此时为了避免=被当作关系运算符看待,使用:=代替。(set语句可以使用= 和 :=)。

select @var:=20;

select @v1:=id, @v2=name from t1 limit 1;

select * from tbl_name where @var:=30;

select into 可以将表中查询获得的数据赋给变量。

-| select max(height) into @max_height from tb;

-- 自定义变量名

为了避免select语句中,用户自定义的变量与系统标识符(通常是字段名)冲突,用户自定义变量在变量名前使用@作为开始符号。

@var=10;

- 变量被定义后,在整个会话周期都有效(登录到退出)

--// 控制结构 ----------

-- if语句

if search_condition then

statement_list

[elseif search_condition then

statement_list]

...

[else

statement_list]

end if;

-- case语句

CASE value WHEN [compare-value] THEN result

[WHEN [compare-value] THEN result ...]

[ELSE result]

END

-- while循环

[begin_label:] while search_condition do

statement_list

end while [end_label];

- 如果需要在循环内提前终止 while循环,则需要使用标签;标签需要成对出现。

-- 退出循环

退出整个循环 leave

退出当前循环 iterate

通过退出的标签决定退出哪个循环

--// 内置函数 ----------

-- 数值函数

abs(x)            -- 绝对值 abs(-10.9) = 10

format(x, d)    -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46

ceil(x)            -- 向上取整 ceil(10.1) = 11

floor(x)        -- 向下取整 floor (10.1) = 10

round(x)        -- 四舍五入去整

mod(m, n)        -- m%n m mod n 求余 10%3=1

pi()            -- 获得圆周率

pow(m, n)        -- m^n

sqrt(x)            -- 算术平方根

rand()            -- 随机数

truncate(x, d)    -- 截取d位小数

-- 时间日期函数

now(), current_timestamp();     -- 当前日期时间

current_date();                    -- 当前日期

current_time();                    -- 当前时间

date('yyyy-mm-dd hh:ii:ss');    -- 获取日期部分

time('yyyy-mm-dd hh:ii:ss');    -- 获取时间部分

date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j');    -- 格式化时间

unix_timestamp();                -- 获得unix时间戳

from_unixtime();                -- 从时间戳获得时间

-- 字符串函数

length(string)            -- string长度,字节

char_length(string)        -- string的字符个数

substring(str, position [,length])        -- 从str的position开始,取length个字符

replace(str ,search_str ,replace_str)    -- 在str中用replace_str替换search_str

instr(string ,substring)    -- 返回substring首次在string中出现的位置

concat(string [,...])    -- 连接字串

charset(str)            -- 返回字串字符集

lcase(string)            -- 转换成小写

left(string, length)    -- 从string2中的左边起取length个字符

load_file(file_name)    -- 从文件读取内容

locate(substring, string [,start_position])    -- 同instr,但可指定开始位置

lpad(string, length, pad)    -- 重复用pad加在string开头,直到字串长度为length

ltrim(string)            -- 去除前端空格

repeat(string, count)    -- 重复count次

rpad(string, length, pad)    --在str后用pad补充,直到长度为length

rtrim(string)            -- 去除后端空格

strcmp(string1 ,string2)    -- 逐字符比较两字串大小

-- 流程函数

case when [condition] then result [when [condition] then result ...] [else result] end   多分支

if(expr1,expr2,expr3)  双分支。

-- 聚合函数

count()

sum();

max();

min();

avg();

group_concat()

-- 其他常用函数

md5();

default();

--// 存储函数,自定义函数 ----------

-- 新建

CREATE FUNCTION function_name (参数列表) RETURNS 返回值类型

函数体

- 函数名,应该合法的标识符,并且不应该与已有的关键字冲突。

- 一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库。

- 参数部分,由"参数名"和"参数类型"组成。多个参数用逗号隔开。

- 函数体由多条可用的mysql语句,流程控制,变量声明等语句构成。

- 多条语句应该使用 begin...end 语句块包含。

- 一定要有 return 返回值语句。

-- 删除

DROP FUNCTION [IF EXISTS] function_name;

-- 查看

SHOW FUNCTION STATUS LIKE 'partten'

SHOW CREATE FUNCTION function_name;

-- 修改

ALTER FUNCTION function_name 函数选项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值