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');