
在表中查询,使用复杂条件查询时,单一的查询语句不够用,我们需要逻辑性更强的查询语句,因此
为了简化使用,MySQL提供了大量的函数,类似于java中API,学会使用函数,能够简化操作。
SELECt ABS(-1); SELECT RAND()*10; SELECT FLOOR(1.9); SELECT CEIL(1.1);取正负
SELECT SIGN(10);
在这里插入代码片字符串函数 返回的是字符个数
SELECT CHAR_LENGTH('java');
SELECT CONCAT('12306','鸭儿呦');
SELECT LOWER('AAAAb');
SELECT UPPER('aaaaB');
SELECT REVERSE('123');
#2指 第几个字符(包括本身),3指代表截取的字符个数
SELECT SUBSTR('郑州欢迎你',2,3);
#从右截取
SELECT RIGHT('郑州欢迎你',2);
#从左截取
SELECT LEFT('郑州欢迎你',2);
日期函数
SELECT CURDATE();
SELECT NOW();
SELECT YEAR(NOW());
SELECT MONTH('2021-10-12');
SELECT DAY('2021-10-12');
#两个日期的时间间隔(间隔天数)
SELECT DATEDIFF('2021-9-28','2021-10-12');
#返回加上 xx天数之后的结果
SELECT ADDDATE('2021-10-12',14);
统计所有的学生人数,count非空计数
SELECT COUNT(*) FROM student; SELECt COUNT(studentName)FROM student;用了GROUP BY,只能查询group by后o的分组字段和其它函数值
SELECt subjectNo,SUM(StudentResult)总分, AVG(StudentResult)平均分, MAX(StudentResult)最高分, MIN(StudentResult)最低分 FROM result分组函数
GROUP BY subjectNo HAVINg 总分>180排序,默认升序asc,desc降序
ORDER BY 平均分 DESClimit 下标 ,条数 分页 ,page页码 ,pageSize每页显示的条数
#limit (page -1)*pageSize , pagsSize SELECt * FROM student LIMIT 0,2第一页 SELECt * FROM student LIMIT 2,2第二页 SELECt * FROM student LIMIT 4,2第三页顺序不能改变
SELECt DISTINCT 字段 FROM tb WHERe 条件 GROUP BY 字段 HAVINg 条件 ORDER BY 字段 ASC/DESC LIMIT 下标,条数
样例:
检查 '高等数学-1’最近一次考试,如果成绩达到80分以上
显示分数排在前5名学员学号和成绩:
SELECt StudentNo, StudentResult FROM result WHERe ExamDate= (SELECt MAX(ExamDate) FROM result WHERe SubjectNo= (SELECt SubjectNo FROM `subject` WHERe SubjectName= '高等数学-1') ) AND StudentResult>80 ORDER BY studentResult DESC LIMIT 5