MySQL中一些常用函数列举

MySQL常用函数

1.字符函数:

名称 描述
CONCAT() 字符连接
CONCAT_WS() 使用指定的分隔符进行字符连接
FORMAT() 数字格式化
LOWER() 转换成小写字母
UPPER() 转换成大写字母
LEFT() 获取左侧字符
RIGHT() 获取右侧字符
LENGTH() 获取字符串长度(按照字节)
CHAR_LENGTH() 获取字符串长度 (按照字符)
LTRIM() 删除前导空格(第一个字符之前的空格)
RTRIM() 删除后续空格(最后一个字符之后的空格)
TRIM() 删除前导和后续空格
SUBSTRING() 字符串截取
SUBSTRING_INDEX() 按关键字进行字符串截取
[NOT] LIKE 模式匹配
REPLACE() 字符串替换
MID() 文本字段中提取字符
简单举例:
select CONCAT('hello','world') -> helloworld
select CONCAT_WS('|','hello','world') -> hello|world
select FORMAT(12560.75,1) -> 12,560.8
select LOWER('MySQL') -> mysql #UPPER() 与之相反即可
select LEFT('MySQL','2') -> My #RIGHT() 与之相反即可
select LENGTH('MySQL') -> 5 #中间包含空格也算长度
select TRIM(LEADING '?' FROM '???MySQL??') -> 'MySQL??'#leading 去掉开头字符,trailing 去掉结尾字符,both开头和结尾字符。
select * from tb_name where column_name like 'M%'#查找tb_name表中的column_name字段开头是M的字段,并显示符合条件的全部信息。
select SUBSTRING('MySQL',1,2) ->'My' -- 从1开始截取2个字符,SUBSTRING('MySQL',2),从第2个(包括该位置)开始往后截取(负数则是倒数开始截取)
select SUBSTRING_INDEX('www.baidu.com','.',2) -> 'www.baidu' -- 是指截取第二个'.'之前的字符串
select REPALCE('???My??SQL??','?','') -> 'MySQL'
select MID('MySQL',1,2) ->'My'

2.数值运算符与函数

名称 描述
CEIL() 进一取整(向上取整)
DIV 整数除法(取整)
FLOOR() 舍一取整(向下取整)
MOD 取余数(取模)
POWER() 幂运算
ROUND() 四舍五入
TRUNCATE() 数字截取
简单举例:
select CEIL(5.01) -> 6;
select 5 DIV 3 -> 1;
select FLOOR(5.01) -> 5;
select 5.3 MOD 3 -> 2.3;
select POWER(3,3) -> 27;
select ROUND(5.03,1) -> 5.0;
select TRUNCATE(5.99,1) -> 5.9;

3.比较运算符与函数

名称 描述
[NOT] BETWEEN…AND… [不]在范围内
[NOT] IN() [不]在列出值范围内
IS [NOT] NULL [不]为空
简单举例:
select 15 BETWEEN 1 AND 16 -> 1 #1在,0不在
select 15 IN(1,15,8,9,) -> 1
selevt * from tb_name where name is null;

4.信息函数

名称 描述
CONNECTION_ID() 连接ID
DATABASE() 当前数据库
LAST_INSERT_ID() 最后插入表的记录的ID
USER() 当前登陆数据库的用户
VERSION() 当前数据库版本信息

5.日期时间函数

名称 描述
NOW() 当前日期和时间
CURDATE() 当前日期
CURTIME() 当前时间
DATE_ADD() 日期变化
DATEDIFF() 日期差值
DATE_FORMAT() 日期格式化
简单举例:
select DATA_ADD('2019-4-16',INTERVAL 365 DAY) -> 2020-4-16
select DATA_ADD('2019-4-16',INTERVAL -365 DAY) -> 2018-4-16
select DATEDIFF('2019-4-16','2020-4-16'); -> -365
select DATE_FORMAT('2019-4-16','%m/%d/%Y') -> 04/16/2019

6.聚合函数:

名称 描述
AVG() 平均值
COUNT() 计数
MAX() 最大值
MIN() 最小值
SUM() 求和

7.加密函数

名称 描述
MD5() 信息摘要算法
PASSWORD() 密码算法(修改数据库登录密码)

自定义函数和存储过程的创建:

1.自定义函数:

创建自定义函数:

creat function function_name  #函数名
returns {string|integer|decimal|real} #返回值类型
routin_body 
#函数体 
#1.可以由合法的sql语句构成;
#2.可以是简单的select或insert语句构成
#3.如果是复合结构则使用begin...end语句;
#4.复用结构可以包含声明,循环,控制结构

删除函数:

drop function [if exists] function_name

简单举例:

#不带参数:
create function f1()
retruns varchar(30)
return date_format(NOW(),'%Y年%m月%d日 %h点:%i分:%s秒');
#带参数:
create function f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
retruns FLOAT(10,2) UNSIGNEN
return (num1+num2)/2;
#复合结构:
delimiter //  #意思是;不是结束语句,而是用//结束语句
create function f3(username varchar(20))
returns int unsigned
begin
insert tb_name(username) values(username);
return last_insert_id();
end
//

2.存储过程:

create
[definer={user|current_user}]  #创建者,不写代表默认当前登陆MySQL客户端的用户
procedure sp_name([proc_parameter[...]])
[characteristic ...] routine_body #过程体
#参数:
proc_parameter:
[in|out|inout]param_name type
#in:表示该参数的值必须在调用存储过程时指定,指定是多少就是多少不能被改变,不可以返回
#out:表示该参数的值可以被存储过程改变,并且可以返回
#inout:表示该参数的调用时指定,并且可以被改变和返回

简单举例:

#不带参数
create procedure spl() select version(); ->call调用过程
#带有in类型参数
delimiter //
create procedure removeUserById(IN p_id int unsigned)
begin 
delete from tb_name where id=p_id;
end
//
#带有out类型参数
delimiter //
create procedure removeUserAndReturnUserNums(IN p_id int unsigned,OUT username int unsigned)
begin 
delete from tb_name where id=p_id;
select count(id) from tb_name into userNums;# 查询tb_name中的count(id)并复制到userNums(事先不存在)表中
end
//
-> call removeUserAndReturnUserNums(27,@nums)
-> 返回的结果存储在@nums#带有多个out类型参数
delimiter //
create procedure remove(IN p_age SMALLINT unsigned,OUT deleteUsers SMALLINT unsigned,OUT userCounts SMALLINT UNSIGNED)
begin 
delete from tb_name where age=p_age;
select ROW_COUNT() into deleteUsers; #ROW_COUNT()可以返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数。
select count(id) from tb_name into userCounts; #表中剩余的数量
end
//
-> call remove(27,@nums,@num)
-> -- 返回的结果存储在@nums,@num中

你可能感兴趣的:(MySQL相关知识)