表和数据

  1. /*年纪表*/
  2. CREATE TABLE IF NOT EXISTS `grade`(
  3. `GradeID` INT(11) NOT NULL AUTO_INCREMENT COMMENT'年级编号',
  4. `GradeName` VARCHAR(50) NOT NULL COMMENT'年级名称',
  5. PRIMARY KEY(`GradeID`)
  6. )ENGINE INNODB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
  7. /*成绩表*/`grade`
  8. DROP TABLE IF EXISTS `result`;
  9. CREATE TABLE `result`(
  10. `StudentNo` INT(4) NOT NULL COMMENT'学号',
  11. `SubjectNo` INT(4) NOT NULL COMMENT'课程编号',
  12. `ExamDate` DATETIME NOT NULL COMMENT'考试日期',
  13. `StudentResult`INT(4) NOT NULL COMMENT'考试成绩',
  14. KEY `SubjectNo` (`SubjectNo`)
  15. )ENGINE=INNODB DEFAULT CHARSET=utf8;
  16. /*学生表*/
  17. DROP TABLE IF EXISTS `student`;
  18. CREATE TABLE `student`(
  19. `StudentNo` INT(4) NOT NULL COMMENT'学号',
  20. `LoginPwd` VARCHAR(20) DEFAULT NULL,
  21. `StudentName` VARCHAR(20) DEFAULT NULL COMMENT'学生姓名',
  22. `Sex` TINYINT(1) DEFAULT NULL COMMENT'性别,取0或者1',
  23. `GradeID` INT(11) DEFAULT NULL COMMENT'年级编号',
  24. `Phone` VARCHAR(50) NOT NULL COMMENT'联系电话,允许为空 可选输入',
  25. `Address` VARCHAR(255) NOT NULL COMMENT'地址 允许为空 可选输入',
  26. `BornDate` DATETIME DEFAULT NULL COMMENT'出生日期',
  27. `Emile` VARCHAR(50) NOT NULL COMMENT'邮箱账号 允许为空 可选输入',
  28. `IdentityCard` VARCHAR(18) DEFAULT NULL COMMENT'身份证号',
  29. PRIMARY KEY(`StudentNo`),
  30. /*唯一索引*/
  31. UNIQUE KEY `IdentityCard`(`IdentityCard`),
  32. KEY `Emile` (`Emile`)
  33. )ENGINE=INNODB DEFAULT CHARSET=utf8;
  34. INSERT INTO `student`(`StudentNo`,`LoginPwd`,`StudentName`,`Sex`,`GradeID`,`Phone`,`Address`,`BornDate`,`Emile`,`IdentityCard`)
  35. VALUES('113','124','王五','0',3,'333','高新','2020-8-20','@126.com','333333333333333333');
  36. `subject`
  37. /*课程表*/
  38. DROP TABLE IF EXISTS `subject`;
  39. CREATE TABLE `subject`(
  40. `SubjectNo` INT(11) NOT NULL AUTO_INCREMENT COMMENT'课程编号',
  41. `SubjectName` VARCHAR(50) DEFAULT NULL COMMENT'课程名称',
  42. `ClassHour` INT(4) DEFAULT NULL COMMENT'学时',
  43. `GradeId` INT(4) DEFAULT NULL COMMENT'年级编号',
  44. PRIMARY KEY(`SubjectNo`)
  45. )ENGINE=INNODB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

排序

  1. --排序 :升序ASC 降序DESC
  2. SELECT stu.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
  3. FROM `result` AS r
  4. LEFT JOIN `subject` AS s
  5. ON r.`SubjectNo`=s.`SubjectNo` --左连接返回result表中匹配的所有数据
  6. LEFT JOIN `student` AS stu
  7. ON r.`StudentNo`=stu.`StudentNo`
  8. WHERE r.`StudentNo`=stu.`StudentNo`
  9. ORDER BY `StudentResult` DESC --降序排列

分页

为什么要分页?

  • 缓解数据库压力
  • 提高用户体验
  1. --分页 每页显示5
  2. --语法 LIMIT 起始值 页面的大小
  3. --网页显示 总的页数 页面的大小
  4. SELECT stu.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
  5. FROM `result` AS r
  6. LEFT JOIN `subject` AS s
  7. ON r.`SubjectNo`=s.`SubjectNo`
  8. LEFT JOIN `student` AS stu
  9. ON r.`StudentNo`=stu.`StudentNo`
  10. WHERE r.`StudentNo`=stu.`StudentNo`
  11. ORDER BY `StudentResult` DESC
  12. LIMIT 0,5
  13. --第一页 LIMIT 0,5
  14. --第二页 LIMIT 5,5
  15. --第n LIMIT (n-1)*pagesize,n*pagesize
  16. --[pagesize 页面大小,n 当前页 总页数=总数据数/页面大小]
  17. 查询成绩排名前十,课程编号不等以21的学生
  18. SELECT stu.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
  19. FROM `result` AS r
  20. LEFT JOIN `subject` AS s
  21. ON r.`SubjectNo`=s.`SubjectNo`
  22. LEFT JOIN `student` AS stu
  23. ON r.`StudentNo`=stu.`StudentNo`
  24. WHERE r.`SubjectNo`<>21
  25. ORDER BY `StudentResult` DESC
  26. LIMIT 0,10

语法:limit(起始值,页面大小)