统计函数

统计函数:count

//返回行的总数
select count(*) | count(列名) from 表 where 条件
count(*) 返回满足条件的记录的行数
count(列) 统计满足条件的某列有多少个,但是会排除为null

统计年龄大于20的人有几个

SELECT
	count( * ) AS '人数' FROM USER 
	WHERE	age > 20;

合计函数:sum

select sum(列1),sum(列2) from 表 where 条件
sum函数仅对数值起作用,否则会报错
对多列求和用逗号隔开

计算id和年龄的和

SELECT
	sum( id ) AS 'id和',
	sum( age ) AS '年龄和' 
FROM
	USER;

计算平均年龄

SELECT
	sum( age ) / count( * ) AS '平均年龄' 
FROM
	USER;

平均函数

select avg(列1),avg(列2) from 表 where 条件
返回满足where条件列的平均值,仅对数值起作用

计算平均年龄

SELECT
	avg( age ) AS '平均年龄' 
FROM
	USER;

最大值/最小值

max 最大值
min 最小值

select max(列) from 表 where 条件

求最大年龄

SELECT
	max( age ) AS '最大年龄' 
FROM
	USER;

字符串函数

返回字符集

//返回指定列的字符集
charset()

返回name的字符集

SELECT  DISTINCT 
	charset( NAME ) AS '字符集'
FROM
	USER;

字符串连接

//连接字符串,将多个列拼接成一列
concat(str1,str2,..)

以人名的年龄是多少的格式显示信息

SELECT
	CONCAT( NAME, '的年龄是', age ) 
FROM
	USER;

mysql where增加if mysql where sum_字符串


返回字符串出现的位置

//instr(string,substring) 返回substring在string中出现的位置,没有返回0
// DUAL 最小的表,不论进行何种操作(不要删除记录),它都只有一条记录

返回a出现的位置

SELECT INSTR( 'dfjlf123dsaf', 'a' ) FROM DUAL;

大小写转换

ucase(str):字符串转大写
lcase(str):字符串转小写

字符串转大写

select ucase('fvdsnjksdv') from dual;

取字符串

//从左边或右边截取指定长度的字符串
right(str,length)
left(str,length)

从右边截取姓名的一个字符

select right(name,1) from user;

返回字符串长度

string(str):返回字符串所占的字节长度

返回name所占的字节长度

select length(name) from user;

字符串替换

replace(field,str1,str2):如果在字段field中发现str1,就替换成str2

将男替换成man显示

select name, replace(sex,'男','man') as sex from user;

字符串截取

substring(field,start[,length]):截取字段,从开始位置截取,开始位置从1开始

截取姓名的前三个字符

select substring(name,1,3) from user;

去除空格

ltrim(field):去掉左侧空格
rtrim(field):去掉右侧空格
trim(field):去掉左右两侧空格

数学函数

绝对值

//abs(数值)
select abs(-3) from DUAL;

10进制转2进制

//bin(数值)
select bin(3) from DUAL;

进制转换

conv(num,from,to) :将num从from进制转为to进制
select CONV(3,10,2) from DUAL;        //10进制的3转为2进制的3

向上取整

//celing(数值)  //取大于等于当前数的最小整数
select CEILING(2.1) from DUAL;          // 结果:3

向下取整

floor(num)   //取小于num的最大整数
select floor(1.99) from DUAL;    // 1

保留小数位数

format(num1,num2) // num1数值,num2保留的位数,结果会四舍五入
select format(1.996,2) from DUAL;   保留两位小数

求最小值

least(num1,num2,....)  //取最小值
select least(2,3,0,4,5) from dual;

求余

mod(num1,num2)  // num1模除以num2
select mod(3,2) from dual;

随机数

rand()  // 返回0~1之间的随机数
select rand() from dual;

日期时间函数

获取当前日期

current_date()  //获取当前日期
select current_date() from dual;

获取当前时间

current_time()   //获取当前时间
select current_time() from dual;

获取当前时间戳

CURRENT_TIMESTAMP()   //返回日期加时间
select CURRENT_TIMESTAMP() from dual;

返回日期部分

date(datetime) //返回时间戳的日期部分
select date('2021-07-12 13:47:23') from dual;    // 2021-07-12

日期差值

datediff(date1,date2)   //返回两个日期之间差多少天,前减后 
select datediff('2021-07-12','2021-07-15') from dual;   -3

系统函数

当前用户

USER()    //返回当前用户,格式:用户@ip地址
select USER();

数据库名称

database()   //返回当前数据库名称
select database();

加密

MD5(str)      //为字符串计算出一个md5的32位字符串
select MD5('123456');

password(str)
select password('123456');