MYSQL-在图书表和学生表基础上进行子查询


USE dbstudent2;-- 先使用学生表
-- 1、基础训练
-- (1)计算“高等数学”课程的平均分。
SELECT AVG(score) FROM score WHERE courseid=(SELECT courseid FROM course WHERE coursename='高等数学'); 

-- (2)列出系别号为“2”所有男生学号、姓名、班号。(使用IN关键字实现)
SELECT student.studentid,studentname,classid FROM student WHERE classid IN (SELECT classid FROM class WHERE departid='2')AND sex='男'; 

-- (3)统计成绩大于任何一个“11701”班级学生成绩的学号、姓名。
SELECT studentid AS '学号',studentname AS '姓名' FROM student WHERE studentid IN (SELECT studentid FROM score WHERE score > 
ANY(SELECT score FROM student INNER JOIN score ON student.studentid=score.studentid WHERE classid='11701'));-- >=any 表示大于任何一个值

-- (4)统计成绩大于所有“11701”班级学生成绩的学号、姓名。
SELECT studentid AS '学号',studentname AS '姓名' FROM student WHERE studentid IN (SELECT studentid FROM score WHERE score >
ALL (SELECT score FROM student INNER JOIN score ON student.studentid=score.studentid WHERE classid='11701')); -- all 表示所有 

-- 查询没有课程成绩的学生姓名、班号
SELECT studentname AS '学生姓名',classid AS '班号' FROM student WHERE NOT EXISTS(SELECT * FROM score 
WHERE student.studentid=score.studentid);

-- (6)列出所有课程的课程名称、平均分数。
SELECT coursename,AVG(score) FROM course LEFT JOIN score ON course.courseid=score.courseid GROUP BY course.courseid;

-- 2、提升训练
USE dblibrary; -- 先使用图书表

-- (1)查询借阅了图书的读者姓名。
SELECT readername FROM reader WHERE readerid IN(SELECT DISTINCT readerid FROM record);

-- (2)查询没有借阅过图书的读者姓名。
SELECT readername FROM reader WHERE readerid NOT IN(SELECT DISTINCT readerid FROM record);


-- (3)查询借阅过《不抱怨的世界》的读者姓名。
SELECT readername FROM reader WHERE readerid IN(SELECT readerid FROM record WHERE bookid IN
 (SELECT bookid FROM book WHERE title='不抱怨的世界')); 

-- (4)列出其他出版社中图书价格高于任何出版社为“陕西师范大学出版社”的图书价格的图书编号、名称和价格。
SELECT bookid AS '图书编号',title AS '图书名称',price AS '图书价格' FROM book WHERE price >ALL 
(SELECT price FROM book WHERE press='陕西师范大学出版社');

-- (5)列出其他出版社中图书价格高于出版社为“陕西师范大学出版社”所有图书价格的图书编号、名称和价格。
SELECT bookid AS '图书编号',title AS '图书名称',price AS '图书价格' FROM book WHERE price >ANY 
(SELECT price FROM book WHERE press='陕西师范大学出版社');

-- (6)UNION关键字,完成查询:查询所有出版社是“陕西师范大学出版社”或者价格超过25的图书编号、图书名称、价格和出版社。 
SELECT bookid AS '图书编号',title AS '图书名称',price AS '图书价格',press AS '出版社' FROM book WHERE press='陕西师范大学出版社' OR price >ANY 
(SELECT price FROM book WHERE price>'25') ORDER BY price ASC;


-- (6.1)完成查询:查询所有出版社是“陕西师范大学出版社”或者价格超过25的图书编号、图书名称、价格和出版社。 
SELECT bookid AS '图书编号',title AS '图书名称',price AS '图书价格',press AS '出版社' FROM book WHERE press='陕西师范大学出版社' UNION
(SELECT bookid AS '图书编号',title AS '图书名称',price AS '图书价格',press AS '出版社' FROM book WHERE price >ANY 
(SELECT price FROM book WHERE price>'25'));


-- (7)使用UNION关键字,完成查询:列出读者编号为3872-3423-001和3872-3423-006的借阅记录(读者姓名,图书名称),读者编号为3872-3423-001的记录在前,读者编号为3872-3423-006的记录在后。
SELECT reader.readername AS '读者姓名',book.title AS '图书名称' FROM reader JOIN record ON reader.readerid=record.readerid
INNER JOIN book ON record.bookid=book.bookid WHERE reader.readerid='3872-3423-001'; 
 UNION ALL(SELECT reader.readername AS '读者姓名',book.title AS '图书名称' FROM reader JOIN record ON reader.readerid=record.readerid
 INNER JOIN book ON record.bookid=book.bookid WHERE reader.readerid='3872-3423-006');

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨昀电子商务工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值