计量函数

COUNT

image.png

  1. #统计一个班有多少学生有多少个
  2. SELECT COUNT(id) FROM student
  3. #统计数学成绩大于90的学生有多少个
  4. SELECT COUNT(*) FROM student
  5. WHERE math>90

注:
count(*) 返回满足条件(where)的记录的行数
count(列) 会排除为列为null的情况

SUM

image.png

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

AVG

image.png

  1. #统计一个班数据平均分
  2. SELECT AVG(math) FROM student;

MAX/MIN

  1. #求班级数学最高分和最低分
  2. SELECT MAX(math),MIN(math) FROM student

字符串相关函数

image.png

  1. # 返回字符集
  2. SELECT CHARSET(ename) FROM emp;
  3. #连接字串,将多个列拼接成一列 注意是逗号
  4. SELECT CONCAT(ename , ' 工作是 ' , job) FROM emp;
  5. #返回substring在string中出现的位置,没有返回0
  6. #dual为亚元表,系统表,可以作为测试表使用
  7. SELECT INSTR('zhaoyun','yun') FROM DUAL;
  8. #转换大小写
  9. SELECT UCASE(ename) FROM emp;
  10. SELECT LCASE(ename) FROM emp;
  11. #从string左边起取length个字符
  12. SELECT LEFT(ename,2) FROM emp;
  13. #从string右边起取length个字符
  14. SELECT RIGHT(ename,2) FROM emp;
  15. SELECT LENGTH(ename) FROM emp; #长度(字节长度)
  16. SELECT STRCMP('hhh','hht') FROM DUAL; #比较大小
  17. SELECT SUBSTRING(ename,1,2) FROM emp; #从1开始取2个字符 2如果不写就取到最后
  18. SELECT LTRIM(' sss'); #去除左边空格
  19. SELECT RTRIM('sss '); #去除右边空格
  20. SELECT TRIM(' sss '); #去除空格

例:用首字母大写的方式显示所有员工emp表的姓名

  1. SELECT CONCAT(UCASE(LEFT(ename,1)),SUBSTRING(ename,2))
  2. AS new_name
  3. FROM emp;

数学函数

image.png

日期函数

image.png

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

加密函数

image.png

  1. #root密码是 'shang' -> 加密md5 ->数据库存放的是加密后的密码
  2. SELECT MD5('shang') FROM DUAL;
  3. SELECT USER() FROM DUAL;
  4. SELECT DATABASE();

流程控制函数

image.png

  1. #判断是否为NULL,要使用 is null
  2. #查询emp表,如果comm是null则输出0.0,否则输出comm
  3. SELECT ename,IF(comm IF NULL,0.0,comm)
  4. FROM emp;
  5. SELECT ename,IFNULL(comm,0.0)
  6. FROM emp;
  7. #如果emp表的job是CLERK,则显示 职员,如果是 MANAGER则显示 经理
  8. #如果是 salesman 则显示 销售人员
  9. SELECT ename,(SELECT CASE
  10. WHEN job = 'CLERK' THEN '职员'
  11. WHEN job = 'MANAGER' THEN '经理'
  12. WHEN job = 'SALESMAN' THEN '销售人员'
  13. ELSE job END) AS 'job'
  14. FROM emp;