计量函数
COUNT

#统计一个班有多少学生有多少个SELECT COUNT(id) FROM student#统计数学成绩大于90的学生有多少个SELECT COUNT(*) FROM studentWHERE math>90
注:
count(*) 返回满足条件(where)的记录的行数
count(列) 会排除为列为null的情况
SUM

#统计一个班数学总成绩SELECT SUM(math) FROM student;#统计一个班级语文,数学,英语各科的总成绩SELECT SUM(chinese),SUM(math),SUM(english) FROM student;#统计一个班语文成绩平均分SELECT SUM(chinese)/COUNT(*) FROM student;
AVG

#统计一个班数据平均分SELECT AVG(math) FROM student;
MAX/MIN
#求班级数学最高分和最低分SELECT MAX(math),MIN(math) FROM student
字符串相关函数

# 返回字符集SELECT CHARSET(ename) FROM emp;#连接字串,将多个列拼接成一列 注意是逗号SELECT CONCAT(ename , ' 工作是 ' , job) FROM emp;#返回substring在string中出现的位置,没有返回0#dual为亚元表,系统表,可以作为测试表使用SELECT INSTR('zhaoyun','yun') FROM DUAL;#转换大小写SELECT UCASE(ename) FROM emp;SELECT LCASE(ename) FROM emp;#从string左边起取length个字符SELECT LEFT(ename,2) FROM emp;#从string右边起取length个字符SELECT RIGHT(ename,2) FROM emp;SELECT LENGTH(ename) FROM emp; #长度(字节长度)SELECT STRCMP('hhh','hht') FROM DUAL; #比较大小SELECT SUBSTRING(ename,1,2) FROM emp; #从1开始取2个字符 2如果不写就取到最后SELECT LTRIM(' sss'); #去除左边空格SELECT RTRIM('sss '); #去除右边空格SELECT TRIM(' sss '); #去除空格
例:用首字母大写的方式显示所有员工emp表的姓名
SELECT CONCAT(UCASE(LEFT(ename,1)),SUBSTRING(ename,2))AS new_nameFROM emp;
数学函数
日期函数

#求出 2011-11-11 和 1990-1-1 相差多少天SELECT DATEDIFF('2011-11-11','1990-1-1') FROM DUAL;#假设一个人1986-11-11出生,如果能活到80岁,求出还能活多长时间SELECT DATEDIFF(DATE_ADD('1986-11-11',INTERVAL 80 YEAR),NOW())FROM DUAL;#查询十分钟内发布的新闻SELECT * FROM mesWHERE DATE_ADD(send_time,INTERVAL 10 MINUTE) >= NOW();#查询当前年数SELECT YEAR(NOW()) FROM DUAL;#unix_timestamp() :返回的是1970-1-1 到现在的秒数SELECT UNIX_TIMESTAMP() FROM DUAL;#FROM_UNIXTIME() 可以把一个 unix_timestamp 秒数转换成指定格式的日期SELECT FROM_UNIXTIME(1618483485,'%Y-%m-%d %H:%i:%s') FROM DUAL;
加密函数

#root密码是 'shang' -> 加密md5 ->数据库存放的是加密后的密码SELECT MD5('shang') FROM DUAL;SELECT USER() FROM DUAL;SELECT DATABASE();
流程控制函数

#判断是否为NULL,要使用 is null#查询emp表,如果comm是null则输出0.0,否则输出commSELECT ename,IF(comm IF NULL,0.0,comm)FROM emp;SELECT ename,IFNULL(comm,0.0)FROM emp;#如果emp表的job是CLERK,则显示 职员,如果是 MANAGER则显示 经理#如果是 salesman 则显示 销售人员SELECT ename,(SELECT CASEWHEN job = 'CLERK' THEN '职员'WHEN job = 'MANAGER' THEN '经理'WHEN job = 'SALESMAN' THEN '销售人员'ELSE job END) AS 'job'FROM emp;
