原文地址:https://blog.csdn.net/weixin_43851310/article/details/88606295
1.内置函数
1.数学函数
rand() round(num) ceil(num) floor(num)
随机 四舍五入 向上取整 向下取整
2.字符串函数
length() 字节长度
char_length() 字符长度
ucase() 大写
lcase() 小写
concat(字符,…,字符n) 连接字符串
replace(字符串,旧字符,新字符)字符串替换
截取字符串
left(字符串,截取长度)
right(字符串,截取长度)
substring(字符串,开始位置,截取长度) #包含开始位置
mysql> select left(‘123456’,4);
±-----------------+
| left(‘123456’,4) |
±-----------------+
| 1234 |
±-----------------+
1 row in set (0.00 sec)
mysql> select right(‘123456’,4);
±------------------+
| right(‘123456’,4) |
±------------------+
| 3456 |
±------------------+
1 row in set (0.00 sec)
mysql> select substring(‘123456’,2,4);
±------------------------+
| substring(‘123456’,2,4) |
±------------------------+
| 2345 |
±------------------------+
1 row in set (0.00 sec)
3.日期函数
now() unix_timestamp() from_unixtime()
当前时间 时间戳 格式化时间戳
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2019-03-16 14:55:42 |
±--------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
±-----------------+
| unix_timestamp() |
±-----------------+
| 1552719356 |
±-----------------+
1 row in set (0.00 sec)
mysql> select from_unixtime(1552719356);
±--------------------------+
| from_unixtime(1552719356) |
±--------------------------+
| 2019-03-16 14:55:56 |
±--------------------------+
1 row in set (0.00 sec)
year() month() day() hour() minute() second()
年 月 日 时 分 秒
mysql> select
-> year(now()) as ‘年’,
-> month(now()) as ‘月’,
-> day(now()) as ‘日’,
-> hour(now()) as ‘时’,
-> minute(now()) as ‘分’,
-> second(now()) as ‘秒’;
±-----±-----±-----±-----±-----±-----+
| 年 | 月 | 日 | 时 | 分 | 秒 |
±-----±-----±-----±-----±-----±-----+
| 2019 | 3 | 16 | 14 | 59 | 12 |
±-----±-----±-----±-----±-----±-----+
4.加密函数
md5(数据)
password(数据)
5.条件判断函数
1).语法: if(数据,值1,值2) #判断指定数据是否为真:真-值1,假-值2
mysql> select if(null,1,2);
±-------------+
| if(null,1,2) |
±-------------+
| 2 |
±-------------+
1 row in set (0.00 sec)
mysql> select if(1,0,2);
±----------+
| if(1,0,2) |
±----------+
| 0 |
±----------+
1 row in set (0.00 sec)
2).语法: IFNULL(数据,值2) #判断指定数据是否为null:null-值2,非null-本身
mysql> select ifnull(0,123);
±--------------+
| ifnull(0,123) |
±--------------+
| 0 |
±--------------+
1 row in set (0.00 sec)
mysql> select ifnull(‘a’,123);
±----------------+
| ifnull(‘a’,123) |
±----------------+
| a |
±----------------+
1 row in set (0.00 sec)
2.自定义函数
语法:
#修改结束符
delimiter //
create function 函数名(参数名 类型,…,参数名n 类型n) returns 返回数据类型
begin
#SQL语句
return 返回值;
end //
delimiter ;
#调用
select 函数名();
输出"hello world"(不带参数的函数)
#判断函数是否存在,存在就删除
drop function if exists f1;
delimiter //
create function f1() returns varchar(30)
begin
return ‘hello world’;
end //
delimiter ;
select f1();
±------------+
| f1() |
±------------+
| hello world |
±------------+
传递两个整型求和(带参数的函数)
drop function if exists f2;
delimiter //
create function f2(num1 int, num2 int) returns int
begin
return num1 + num2;
end //
delimiter ;
select f2(8, 2);
±---------+
| f2(8, 2) |
±---------+
| 10 |
±---------+
3.自定义函数相关语法
显示所有的函数:show function status\G #输出的内容很多
删除函数:drop function [if exists] 函数名;
4.存储过程和函数的区别
存储过程可以返回多个值,而自定义函数只能返回一个值
存储过程一般独立执行,而函数往往作为其他SQL语句的一部分来使用