【MySQL】多表查询


多表连接语法:

where链接:略
from链接:略


例子:

教职工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号;
课程表Course(Cno, CName, CCredits, CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分, CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键;
学生表Student(Sno, CLno, SName, SSex, SBir, Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期;
学生选课表SC(Sno, Cno, Score)。


  1. 查询选修了数据库的学生的学号
    在这里插入图片描述
  2. 查询JAVA成绩不及格的学生学号姓名成绩
    在这里插入图片描述
  3. 使用内连接查询每个学生及其选修课程情况;
    在这里插入图片描述
  4. 使用左连接查询查询每个学生及其选修课程情况,并讨论和上一题结果的区别;
    在这里插入图片描述
    左连接:student表左连接sc表,意味着查询结果集中必须包含student表的全部记录,然后student表按学号与sc表连接,因为00005~00007号无sc表信息,所以插入NULL值代替。
  5. 使用连接查询选修了张三老师所授课程的学生学号姓名
SELECT student.SNo,SName
FROM student INNER JOIN sc ON student.SNo=sc.SNo 
INNER JOIN course ON sc.CNo=course.CNo 
INNER JOIN teacher ON course.CTno=teacher.Tno 
WHERE TName='张三'

在这里插入图片描述
6. 查询和马行空在同一个系的学生名字
在这里插入图片描述在这里插入图片描述
7. 查询001号课程的最高分学生学号姓名
在这里插入图片描述
8. 使用IN查询教师张七的下属教师名字
在这里插入图片描述
9. 使用NOT IN查询未选修”数据库”课程的学生学号
在这里插入图片描述
10. 使用EXISTS查询00014号选修的课程名
在这里插入图片描述
11. 使用NOT EXISTS查询00014号未选修的课程名
在这里插入图片描述
12. 查询选修了两名课程及以上的学生姓名学号
在这里插入图片描述
13. 查询选修了所有课程的学生学号姓名
在这里插入图片描述
14. 在选修课001中,使用ALL查询比学号00001和学号00004的成绩都低的学生学号

SELECT SNO
FROM SC 
WHERE CNo='001' AND score<ALL
(SELECT score 
FROM SC WHERE (SNO='00001' OR SNO='00004') AND CNo='001')

在这里插入图片描述

  1. 在选修课001中,使用ANY查询比学号00001或学号00004的成绩低的学生学号
SELECT SNO
FROM SC 
WHERE CNo='001' AND score<ANY
(SELECT score 
FROM SC WHERE (SNO='00001' OR SNO='00004') AND CNo='001')

在这里插入图片描述

  1. 在选修课001中,查询最高分的学生学号
    在这里插入图片描述
  2. 查询系号为01成绩都及格的学生的姓名平均成绩,按平均成绩降序排序;
    在这里插入图片描述
  3. 分别查询选修了001号课程的学生学号和选修了002号课程的学生学号,使用UNION和UNION ALL把两个查询结果合并起来,并讨论查询结果异同;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    因为union将多个查询结果合并起来时,系统自动去掉重复元组;union all将多个查询结果合并起来时,保留重复元组 ,所以上面结果集中的sno值出现重复。
  4. 查询课程名以英文字母开头的课程信息。
    在这里插入图片描述
  5. 查询课程名纯英文字母的课程信息
select * 
from course
where CName regexp '^[a-z]*[a-z]$';

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值