返回
玩转MySQL数据库,化身数据处理高手
人工智能
2023-10-07 23:55:44
第一部分:数据处理入门
问题一:每门课的选修人数有多少?
SELECT course_name, COUNT(*) AS num_students
FROM student_courses
GROUP BY course_name;
问题二:哪些课程有超过10个学生选修?
SELECT course_name
FROM student_courses
GROUP BY course_name
HAVING COUNT(*) > 10;
第二部分:数据分析实战
问题三:哪些学生选修了所有课程?
SELECT student_name
FROM students
WHERE NOT EXISTS (
SELECT *
FROM courses
WHERE course_name NOT IN (
SELECT course_name
FROM student_courses
WHERE student_name = students.student_name
)
);
问题四:哪些学生选修了至少三门课程?
SELECT student_name
FROM students
WHERE EXISTS (
SELECT *
FROM (
SELECT student_name, COUNT(*) AS num_courses
FROM student_courses
GROUP BY student_name
) AS subquery
WHERE subquery.num_courses >= 3
);
问题五:哪些课程的平均成绩最高?
SELECT course_name, AVG(grade) AS average_grade
FROM student_grades
GROUP BY course_name
ORDER BY average_grade DESC
LIMIT 1;
第三部分:优化查询和索引设计
问题六:如何优化查询以提高性能?
在查询中使用索引可以大大提高查询速度。例如,在上面的查询中,可以在student_courses
表上创建索引,这样MySQL就可以快速找到满足查询条件的行。
问题七:如何设计索引以提高查询性能?
索引的设计应该根据表的结构和查询模式来确定。例如,如果经常需要根据student_name
字段进行查询,那么就可以在students
表上创建一个student_name
索引。
结语
MySQL是一款功能强大的数据库管理系统,可以帮助我们轻松管理和处理数据。通过学习这些经典习题,你已经掌握了MySQL的基本知识,并且可以进一步深入学习,成为一名数据库处理高手。