常用函数:
SELECT ABS(-8) -- 绝对值
SELECT CEILING (9.2323) -- 向上取整
SELECT FLOOR (9.2323) -- 向下取整
SELECT RAND() -- 返回一个0到1的随机数
SELECT SIGN(-9) -- 判断一个数的符号 0-0 负数返回-1 正数返回1
– 字符串函数
SELECT CHAR_LENGTH('大苏打阿斯顿暗势的') -- 字符串长度
SELECT CONCAT ('a','b','c','def') -- 拼接字符串
SELECT INSERT('我的天',4,2,'老爷') -- 插入/替换字符串 从某个位置替换某个长度
SELECT LOWER('DASDdsad') -- 转换小写
SELECT UPPER('dsdfF') -- 转换大写
SELECT INSTR('dsa','s') -- 返回第一次出现字符串的索引
SELECT REPLACE('ds adas','ds','我爱') -- 替换出现指定的字符串
SELECT SUBSTR('大苏打阿斯顿暗势的',3,4) -- 返回指定的字符串 (源字符串,截取的位置,截取长度)
SELECT REVERSE('大苏打阿斯顿暗势的') -- 反转字符串
– 时间日期函数
SELECT CURRENT_DATE() – 获取当前日期
SELECT CURRENT_TIME() – 获取当前时间
SELECT NOW() – 获取当前日期和时间
SELECT LOCALTIME() – 获取本地时间
SELECT SYSDATE() – 系统时间
SELECT YEAR(NOW())
SELECT MONTH(NOW())
SELECT HOUR(NOW())
SELECT DAY(NOW())
SELECT MINUTE(NOW())
SELECT SECOND(NOW())
– 系统
SELECT SYSTEM_USER()
SELECT VERSION()
聚合函数:
COUNT() – 计数
SUM() – 总和
AVG() – 平均
MAX()
MIN()
SELECT COUNT(`studentname`) FROM `student` -- count(字段) 会忽略所有的null值
SELECT COUNT(*) FROM `student`-- 不会忽略所有的null值 本质是计算行数 但是要走所有的列
SELECT COUNT(1) FROM `student`-- 不会忽略所有的null值 本质是计算行数 但只走一列
– 查询不同课程的平均分,最高分,最低分,平均分大于60
SELECT AVG(`studentresult`) AS 平均分,MIN(`studentresult`),MAX(`studentresult`),`subjectname`
FROM result AS r
INNER JOIN `subject` AS s
ON r.`subjectno`=s.`subjectno`
GROUP BY r.subjectno -- 通过什么字段来分组
HAVING 平均分>60 -- 过滤分组的记录必须满足的次要条件
MD5加密
CREATE TABLE `testMD5`(
`id` INT(4) NOT NULL,
`name` VARCHAR(20) NOT NULL,
`pwd` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8
– 明文密码
INSERT INTO `testmd5` VALUES (1,'张三','123'),(2,'李四','123'),(3,'王五','123')
– 加密
UPDATE `testmd5` SET pwd=MD5(pwd)
WHERE `id`=1
– 插入的时候加密
INSERT INTO `testmd5` VALUES (4,'张da',MD5('123'))