查询参加考试的同学(学号,姓名,科目名,分数)
思路:
1.分析需求,分析查询字段来自那些表,(连接查询)
2.明确使用那种连接查询?7种中间选择合适的
判断条件: 学生表的studentNo=成绩表中studentNo
1 select s.studentNo,studentName, 2 subjectName,studentGrades 3 from student s 4 inner join grades g 5 on s.studentNo=g.studentNo --没有后续的话换成where也可以
inner join----如果表中至少有一个匹配,就返回信息
left join------会从join的左侧表中返回所有值,即使右表没有匹配
right join-----会从join的右侧表中返回所有值,即使左表没有匹配
1 --Right join 2 select s.studentNo,studentName, 3 subjectName,studentGrades 4 from student s 5 right join grades g 6 on s.studentNo=g.studentNo
1 --Left join 2 select s.studentNo,studentName, 3 subjectName,studentGrades 4 from student s 5 left join grades g 6 on s.studentNo=g.studentNo
查询缺考试的同学(学号,姓名,科目名,分数)
1 select s.studentNo,studentName, 2 subjectName,studentGrades 3 from student s 4 left join grades g 5 on s.studentNo=g.studentNo 6 where studentGrades is null
查询参加考试的同学信息:(学号,学生姓名,科目名,分数)
1 select s.studentNo,studentName, 2 subjectName,studentGrades 3 from student s 4 right join grades g 5 on g.studentNo=s.studentNo 6 inner join subject sub 7 on g.subjectNo=sub.subjectNo
查询参加数据库-1考试的同学信息:(学号,学生姓名,科目名,分数)
1 select s.studentNo,studentName, 2 subjectName,studentGrades 3 from student s 4 inner join grades g 5 on s.studentNo=g.studentNo 6 inner join subject sub 7 on g.subjectNo=sub.subjectNo 8 where subjetName=`数据库-1`
自查询:把一张表看成两张一样的表
查询父子信息:
1 select a.categoryName as `父栏目` , 2 b.categoryName as `子栏目` 3 from category as a, 4 category as b 5 where 6 a.categoryid=b.pid
查询所有的课程的名称以及对应的任课老师姓名
分析需求:我们需要用到course和teacher表:既需要得到课程名称又要拿到老师姓名,然后看表结构模型,我们可以知道
course有外键字段teacher_id指向teacher表id,那么我们就可以用内连接inner join将两张表拼接起来然后取其字段course.cname
和teacher.tname即可得到我们想要的数据,SQL语句如下:
1 SELECT 2 cname, 3 tname 4 FROM 5 teacher 6 INNER JOIN course ON course.teacher_id = teacher.tid;
原文地址:https://www.cnblogs.com/zhsv/p/12322780.html
时间: 2024-11-02 18:37:00