统计函数
统计函数: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;
返回字符串出现的位置
//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');