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
select LEFT('MySQL','2') -> My
select LENGTH('MySQL') -> 5
select TRIM(LEADING '?' FROM '???MySQL??') -> 'MySQL??'
select * from tb_name where column_name like 'M%'
select SUBSTRING('MySQL',1,2) ->'My'
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
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
删除函数:
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}]
procedure sp_name([proc_parameter[...]])
[characteristic ...] routine_body
proc_parameter:
[in|out|inout]param_name type
简单举例:
create procedure spl() select version(); ->call调用过程
delimiter
create procedure removeUserById(IN p_id int unsigned)
begin
delete from tb_name where id=p_id;
end
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;
end
-> call removeUserAndReturnUserNums(27,@nums)
-> 返回的结果存储在@nums中
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;
select count(id) from tb_name into userCounts;
end
-> call remove(27,@nums,@num)
->