-- 查询参加了考试的同学信息(学号,学生姓名,科目编号,分数)
SELECT * FROM student;
SELECT * FROM result;
/*
1.分析需求,确定查询的列来源于两个表,student result,连接查询
2.确定使用哪种连接查询?(内连接)
*/
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
INNER JOIN result r
ON r.studentno=s.studentno
-- 右连接(也可实现)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
RIGHT JOIN result r
ON r.studentno = s.studentno
-- 等值连接
SELECT s.studentno,studentname,subjectno,StudentResult FROM student s , result r WHERE r.studentno = s.studentno
-- 左连接 (查询了所有同学,不考试的也会查出来)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
LEFT JOIN result r
ON r.studentno = s.studentno
-- 查一下缺考的同学(左连接应用场景)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
LEFT JOIN result r
ON r.`studentno`=s.`studentno`
WHERE `studentresult` IS NULL
-- 思考题:查询参加了考试的同学信息(学号,学生姓名,科目名,分数)
/*
思路
1.需求分析,分析查询的字段来自哪些表,student、result、subject(连接查询)
2.确定使用哪种类型连接查询?7种
确定交叉点(这两个表中哪些数据是相同的)
判断的条件:学生表中的studentNo=成绩表 studentNo
*/
SELECT s.studentno,studentname,subjectname,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
INNER JOIN `subject` sub
ON sub.subjectno = r.subjectno