类似于编程语言中定义的方法,提高编写SQL语句的效率(对外暴露接口,隐藏内部细节,提高代码重用)
调用
SELECT 函数名(实参列表) FROM 表;
分类
单行函数
CONCAT(),LENGTH(),IFNULL()
分组函数(统计函数,聚合函数)
SUM()
LENGTH 字符串长度
SELECT LENGTH('abc');
# 结果是3
SELECT LENGTH('你好hello')
#结果是11
#MySQL使用utf-8字符集,一个汉字占3个字节,一个字母占一个字节
CONCAT 字符串连接
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employee;
#将姓名使用下划线连接起来显示
UPPER,LOWER 字符串大小写变化
SELECT UPPER('AbC');
#结果 ABC
SELECT LOWER('AbC);
#结果 abc
SUBSTR 字符串求字串
SELECT SUBSTR('123456',3,2);
#结果 34
# SUBSTR(原始字符串,开始索引,字符长度)
#MySQL中索引从1开始
INSTR 返回子串的第一次出现的索引
SELECT INSTR('123456','34');
#结果 3
SELECT INSTR('123456','78');
#结果 0
#INSTR(原始字符串,子串)
#如果原始字符串中可以找到子串就返回子串的第一次出现的索引,否则返回0
TRIM 去除两边的指定字符串
SELECT TRIM(' AAA ');
#结果'AAA'
SELECT TRIM('A','AABBAABBAA');
#结果'BBAABB'
#TRIM(指定字符串 from 原始字符串)
#如果没有指定字符就默认是空格
LPAD,RPAD 左填充,右填充
SELECT LPAD('11',4,'0');
#结果 '0011'
#LPAD(原始字符串,结果长度,填充字符串)
#如果结果长度小于原始字符串长度,那么将会发生截断
REPLACE 替换
SELECT REPLACE('123456','456','321');
#结果 '123321'
#REPLACE(原始字符串,被替换字符串,替换字符串)
ROUND 四舍五入
SELECT ROUND(1.3);
#结果 1
SELECT ROUND(-1.6);
#结果 -2
#ROUND(目标数字,四舍五入到小数点后几位)
CEIL 向上取整
SELECT CEIL(1.00);
#结果 1
SELECT CEIL(1.1);
#结果 2
FLOOR 向下取整
SELECT FLOOR(1.00);
#结果 1
SELECT FLOOR(1.1);
#结果 1
TRUNCATE 截断
SELECT TRUNCATE(1.2345,2);
#结果 1.23
#TRUNCATE(目标数字,截断后保留小数点后几位)
MOD 效果等同%
SELECT MOD(10,3);
#结果 1
#MOD(a,b)=a-a/b*b
NOW 返回当前系统日期及时间
SELECT NOW();
#结果 2019-05-05 19:17:02
CURDATE 返回当前日期
SELECT CURDATE();
#结果 2019-05-05
CURTIME 返回当前时间
SELECT CURTIME();
#结果 19:19:26
YEAR MONTH DAY,,, 返回指定的部分
SELECT YEAR(NOW());
#结果 2019
SELECT HOUR(NOW());
#结果 19
STR_TO_DATE 将字符串按照指定格式转换为日期
SELECT STR_TO_DATE('1999-7-1','%Y-%c-%d')
#结果 1999-07-01
DATE_FORMAT
SELECT DATE_FORMAT(NOW(),'%Y年%c月%d日');
#结果 2019年5月05日
SELECT VERSION();
#查看当前版本
SELECT DATEBASE();
#查看当前数据库
SELECT USER();
#查看当前用户
IF
SELECT IF(1>0,'YES','NO');
#结果 YES
#IF(条件语句,条件为真返回值,条件为假返回值),类似于三元运算符
CASE
SELECT concat(first_name,last_name),
case actor_id
when 1 then 'No.1'
else 'loser'
end as 评价
from actor
#结果 PENELOPEGUINESS No.1
# NICKWAHLBERG loser
# EDCHASE loser
#CASE 要判断的字段或表达式
#WHEN 常量1 THEN 要返回的值或语句1;
#WHEN 常量2 THEN 要返回的值或语句2;
求和 | 平均值 | 最大值 | 最小值 | 统计个数 |
---|---|---|---|---|
SUM | AVG | MAX | MIN | COUNT |
SELECT SUM(population),AVG(Population),MAX(Population),MIN(Population)
FROM city;
#结果
#3504682236 10500000 1429559884 42
SUM,AVG一般处理数值型
MAX,MIN,COUNT处理任意值
以上函数都忽略NULL
可以和DISTINCT搭配实现去重
SELECT SUM(DISTINCT,population)
FROM city;
==count()语法细则==
原文:https://www.cnblogs.com/redo19990701/p/11286671.html