mysql函数
分组和过滤
key world: group by, having
-- 查询不同课程的平均分 最高分 最低分 平均分大于70分
SELECT subjectname,AVG(studentresult) AS 平均分, MAX(studentresult) as 最高分, MIN(studentresult) as 最低分
FROM `result` r
INNER JOIN `subject` sub
ON r.`subjectno` = sub.`subjectno`
GROUP by r.subjectno -- 结果通过什么字段来分组
HAVING 平均分>70;
常用函数 (看一遍就好了)
用法举例
-- 查询studentname,并把 小 替换成 张。注意并不会改变数据库!
SELECT REPLACE(`studentname`,'小','张') FROM `student`;
SELECT studentname FROM student; -- 还是会查出来 小XX
数学运算
SELECT CEILING(9.4);
SELECT FLOOR(9.4);
SELECT RAND();
SELECT ABS(-8);
SELECT SIGN(8);
SELECT SIGN(-8);
SELECT SIGN(0);
SELECT CHAR_LENGTH("嘿嘿");
SELECT CONCAT('hello',' world');
SELECT INSERT('hi_world',1,2,'by');
SELECT LOWER('HI WORLD');
SELECT UPPER('hi world');
SELECT INSTR('hi_world','d');
SELECT REPLACE('hi world','hi','hello');
SELECT SUBSTR('hi_world',1,2);
-- 等等,不再举例了,遇到再查
时间和日期(记住)
SELECT CURRENT_DATE();
SELECT CURDATE();
SELECT now();
SELECT LOCALTIME();
SELECT SYSDATE();
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());
系统
SELECT SYSTEM_USER();
SELECT USER();
SELECT VERSION();
聚合函数 (常用)
SELECT COUNT(studentname) FROM student; -- COUNT(字段),会忽略所有的null值
SELECT COUNT(*) FROM student; -- count(*) ,不会忽略null值
SELECT COUNT(1) FROM student; -- count(1) ,不会忽略null值
SELECT SUM(studentresult) FROM `result`;
SELECT AVG(studentresult) FROM `result`;
SELECT MAX(studentresult) FROM `result`;
SELECT MIN(studentresult) FROM `result`;
数据库级别的md5加密(扩展)
md5 不可逆
md5破解网站的原理,背后有一个字典,md5加密后的值,加密前的值 (123456这种才能破解出来,因为有了字典)
-- 插入的时候加密
INSERT INTO tetsmd5 VALUES(1,'lake',MD5('123456'));
-- 如何校验:将用户传入的密码,进行md5加密,然后对比加密后的值(相同的值,md5()加密后的结果是一样的)
SELECT * FROM testmd5 WHERE `name`='lake' AND `pwd`=MD5('123456')