5.1 统计函数(聚合函数)
# 统计数学成绩大于 90 的学生有多少个?
SELECT COUNT(*) FROM student WHERE math > 90;# 求一个班级总分平均分
SELECT AVG(math + english + chinese) FROM student;# 统计一个班级数学总成绩
SELECT SUM(math) FROM student# 求出班级数学最高分和最低分
SELECT MAX(math) AS math_high_socre, MIN(math) AS math_low_socre FROM student;
5.2 字符串函数:注意索引从1开始
即一列utf8
RIGHT用法相同
也可以用LEFT(ename,1)替换SUBSTRING。
5.3 数学函数
FORMAT:四舍五入保留小数
RAND:rand()返回[0, 1]随机浮点数,每次返回不同值;rand(3)指定3为种子,可以得到重复的随机数。
5.4 时间日期函数
5.5 加密、系统函数
-- USER() 查询用户
-- 可以查看登录到 mysql 的有哪些用户,以及登录的 IP
SELECT USER() FROM DUAL; -- 用户@IP地址 root@localhost-- DATABASE()查询当前使用数据库名称
SELECT DATABASE();-- MD5(str) 为字符串算出一个 MD5 32位的字符串,常用(用户密码)加密
-- root 密码是 hsp -> 加密 md5 -> 在数据库中存放的是加密后的密码
SELECT MD5('hsp') FROM DUAL;
-- 演示用户表,存放密码时,是 md5
CREATE TABLE hsp_user(id INT , `name` VARCHAR(32) NOT NULL DEFAULT '', pwd CHAR(32) NOT NULL DEFAULT '');
INSERT INTO hsp_user VALUES(100, '韩顺平', MD5('hsp'));
SELECT * FROM hsp_user WHERE `name`='韩顺平' AND pwd = MD5('hsp') # 只能加密后对比-- PASSWORD(str) -- 加密函数, MySQL 数据库的用户密码就是 PASSWORD 函数加密
SELECT PASSWORD('hsp') FROM DUAL;
-- select * from mysql.user \G 从原文密码 str 计算并返回密码字符串
-- 通常用于对 mysql 数据库的用户密码加密
-- mysql.user 表示 数据库.表
SELECT * FROM mysql.user
5.6 流程控制函数
-- 1. 查询 emp 表, 如果 comm 是 null , 则显示 0.0
-- 判断是否为 null 要使用 is null, 判断不为空 使用 is not
SELECT ename, IF(comm IS NULL , 0.0, comm) FROM emp;
SELECT ename, IFNULL(comm, 0.0) FROM emp;-- 2. 如果emp表的job是CLERK则显示职员,如果是MANAGER则显示经理,如果是SALESMAN则显示销售人员,其它正常显示
SELECT ename,(SELECT CASE WHEN job = 'CLERK' THEN '职员' WHEN job = 'MANAGER' THEN '经理' WHEN job = 'SALESMAN' THEN '销售人员' ELSE job END) AS 'job' FROM emp;
参考:韩顺平Mysql