美文网首页
MySQL-多表查询练习题3

MySQL-多表查询练习题3

作者: 七喜丶 | 来源:发表于2021-09-29 07:35 被阅读0次

多表查询-数据准备

-- 创建学生表
CREATE TABLE student (
    sid INT PRIMARY KEY AUTO_INCREMENT,
    sname VARCHAR(20)
);

-- 创建课程表
CREATE TABLE course (

    cid INT PRIMARY KEY AUTO_INCREMENT,
    cname VARCHAR(20)
)

-- 创建学生表和课程表的三方外键关联表
CREATE TABLE stu_course(
    sid INT,
    cid INT,
    FOREIGN KEY (sid) REFERENCES student(sid),
    FOREIGN KEY (cid) REFERENCES course(cid)
)

-- 向学生表中插入数据
INSERT INTO student VALUES (NULL,'张三'),(NULL,'李思思'),(NULL,'李虎');

-- 向课程表中插入数据
INSERT INTO course (cname) VALUES ('JAVA'),('ANDROID'),('IOS'),('PHP'),('C++');

-- 向三方外键关联表中插入数据
INSERT INTO stu_course VALUES (1,1),(1,3),(1,5),(2,1),(2,2),(3,2),(3,3),(3,5);

题目如下:

1.查询每个学生所选择的课程
2.统计每个学生所选课程的数量
3.统计每门课程被多少学生选择
4.选择了两门课的学生
5.一门课都没有选的学生
6.选择了所有课程的学生
7.选了至少一门课的人

提示数据可能不全请自行添加相关数据

参考答案:
(1)查询每个学生所选择的课程

select s.sname, c.cname 
from student s, stu_course sc, course c 
where s.sid = sc.sid and sc.cid = c.cid;

(2)统计每个学生所选课程的数量

select s.sname, count(1) 
from student s, stu_course sc, course c
 where s.sid = sc.sid and sc.cid = c.cid group by s.sname;

(3)统计每门课程被多少学生选择

select c.cname, count(1) 
from student s, stu_course sc, course c 
where s.sid = sc.sid and sc.cid = c.cid group by c.cname;

(4)选择了两门课的学生

select s.sname, count(1) couresNum 
from student s, stu_course sc, course c 
where s.sid = sc.sid and sc.cid = c.cid group by s.sname having couresNum = 2;

(5)一门课都没有选的学生

select s.sname, count(c.cname) courseNum 
from student s left join stu_course sc on s.sid = sc.sid 
left join course c on sc.cid = c.cid group by s.sname having courseNum = 0;

(6)选择了所有课程的学生

select s.sname, count(c.cname) courseNum 
from student s left join stu_course sc on s.sid = sc.sid 
left join course c on sc.cid = c.cid group by s.sname 
having courseNum = (select count(1) from course);

(7)选了至少一门课的人

select s.sname, count(c.cname) courseNum 
from student s left join stu_course sc on s.sid = sc.sid 
left join course c on sc.cid = c.cid group by s.sname 
having courseNum >= 1;

相关文章

  • MySQL-多表查询练习题3

    多表查询-数据准备 题目如下: 1.查询每个学生所选择的课程2.统计每个学生所选课程的数量3.统计每门课程被多少学...

  • MySQL-多表查询练习题1

    多表查询-数据准备 题目如下: 1.查询用户的编号、姓名、年龄。订单编号2.查询所有的用户。用户的编号、姓名、年龄...

  • MySQL-多表查询练习题2

    多表查询-数据准备 题目如下: 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述2.查询员工...

  • MySql-多表查询

    多表查询分为以下几种: 合并结果集: UNION UNION ALL 连接查询 ...

  • Mysql-多表查询as索引

    1、Mysql多表查询2、information_schema 虚拟库3、索引 1、多表查询 方法(1) 根据需求...

  • 4.MySQL多表&事务

    主要内容 1 . 多表查询2 . 事务3 . DCL 多表查询: 事务 DCL:

  • MySQL多表&事务课堂笔记

    内容 1、多表查询2、事务3、DCL 多表查询: 1.查询语法:select 列名列表 from 表名列表...

  • sql多表查询练习题

    建表语句 1、查询所有的课程的名称以及对应的任课老师姓名 2、查询学生表中男女生各有多少人 3、查询物理成绩等于1...

  • 23 多表查询练习题

    【题目】 1.显示所有员工的姓名,部门号和部门名称。 2.查询90号部门员工的job_id和90号部门的locat...

  • mysql-数据查询语句-多表

    连接查询 连接查询,是关系数据库中最主要的查询,包括等值查询、自然连接查询、非等值查询、自身连接查询、外连接查询和...

网友评论

      本文标题:MySQL-多表查询练习题3

      本文链接:https://www.haomeiwen.com/subject/spnlnltx.html