mysql 自表查询_mysql_联表查询和自查询

fcba001a2e3a9b659a15c3495b891029.png

查询参加考试的同学(学号,姓名,科目名,分数)

思路:

1.分析需求,分析查询字段来自那些表,(连接查询)

2.明确使用那种连接查询?7种中间选择合适的

判断条件: 学生表的studentNo=成绩表中studentNo

1 select s.studentNo,studentName,2 subjectName,studentGrades3 from student s4 inner join grades g5 on s.studentNo=g.studentNo --没有后续的话换成where也可以

inner join----如果表中至少有一个匹配,就返回信息

left join------会从join的左侧表中返回所有值,即使右表没有匹配

right join-----会从join的右侧表中返回所有值,即使左表没有匹配

1 --Right join2 select s.studentNo,studentName,3 subjectName,studentGrades4 from student s5 right join grades g6 on s.studentNo=g.studentNo

1 --Left join2 select s.studentNo,studentName,3 subjectName,studentGrades4 from student s5 left join grades g6 on s.studentNo=g.studentNo

查询缺考试的同学(学号,姓名,科目名,分数)

1 select s.studentNo,studentName,2 subjectName,studentGrades3 from student s4 left join grades g5 on s.studentNo=g.studentNo6 where studentGrades is null

查询参加考试的同学信息:(学号,学生姓名,科目名,分数)

1 select s.studentNo,studentName,2 subjectName,studentGrades3 from student s4 right join grades g5 on g.studentNo=s.studentNo6 inner join subject sub7 on g.subjectNo=sub.subjectNo

查询参加数据库-1考试的同学信息:(学号,学生姓名,科目名,分数)

1 select s.studentNo,studentName,2 subjectName,studentGrades3 from student s4 inner join grades g5 on s.studentNo=g.studentNo6 inner join subject sub7 on g.subjectNo=sub.subjectNo8 where subjetName=`数据库-1`

自查询:把一张表看成两张一样的表

查询父子信息:

1 select a.categoryName as `父栏目` ,2 b.categoryName as `子栏目`3 from category as a,4 category as b5 where6 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值