MySQL函数 (B站 24-27集)

125 阅读2分钟

mysql函数

官网:dev.mysql.com/doc/refman/…

分组和过滤

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')