✔1.node.js初体验windows ✔2.commonjs-回顾ES6模块化 ✔3.commonjs的语法介绍 ✔4.commonjs和ES6 Module的区别 ✔5.Bug分类 ✔6.node.js和前端js的区别 ✔7.左关联 ✔8.聚合函数 ✔9.【案例】统计上班时间 ✔10.数据库的索引 ✔11.索引的分类 ✔12.查询数学成绩比语文成绩高的学生 |
|
编程目标:查询数学成绩比语文成绩高的学生
怎么做呢?
学生表:
分数表:
课程表:
假设有三张表:一张是学生表,包含学生ID(id)和学生姓名(student_name)两个列;
另一张是课程表,包含课程ID(id)和课程名称(course_name)两个列;
第三张表是分数表,包含学生ID(student_id)、课程ID(course_id)两个列。
要查询数学成绩比语文成绩高的学生,可以使用以下SQL语句:
select yw.student_id,yw.student_name, sx.score,sx.course_name, yw.score,yw.course_name from (select sc.student_id,st.student_name,sc.course_id,c.course_name,sc.score from student st join score sc on st.id = sc.student_id join course c on sc.course_id = c.id where c.course_name = "语文") yw join (select sc.student_id,st.student_name,sc.course_id,c.course_name,sc.score from student st join score sc on st.id = sc.student_id join course c on sc.course_id = c.id where c.course_name = "数学") sx on yw.student_id = sx.student_id where yw.score < sx.score;
运行结果:
大体思路:
1)yw 这个SQL语句将从学生表、分数表和课程表三个表中选择所有语文成绩的学生,
并返回他们的姓名、课程名称、分数等。
使用JOIN语句将三张表【学生表、分数表和课程表】连接起来,以便在查询中使用学生姓名和课程名称。
WHERE子句用于筛选出语文课程。
2)sx 这个SQL语句将从学生表、分数表和课程表三个表中选择所有数学成绩的学生,
并返回他们的姓名、课程名称、分数等。
使用JOIN语句将三张表【学生表、分数表和课程表】连接起来,以便在查询中使用学生姓名和课程名称。
WHERE子句用于筛选出数学课程。
3)
最外面一层 这个SQL语句将从学生表、yw 表和sx 表三个表中选择所有数学成绩比语文成绩高的学生,
并返回他们的姓名、数学课程、数学分数、语文课程、语文分数等。
并过滤出数学成绩比语文成绩高的学生。