返回
MySQL50题解惑系列——三、模糊匹配、多排序、多表连接技巧
人工智能
2023-12-06 09:39:16
引言
欢迎来到MySQL经典50题解析系列的第三期!在这一系列中,我们将深入探索模糊匹配、多排序、多表连接查询等技巧,并通过具体题目解析帮助您轻松掌握这些实用技能,助您玩转MySQL数据库。
第31题:查询1990年出生的学生
SELECT *
FROM student
WHERE SUBSTR(birthday, 1, 4) = '1990';
解析:
本题考察了模糊匹配的技巧。通过使用SUBSTR函数提取出生日期的前四位,可以查询出所有1990年出生的学生信息。
第32题:同时指定多种排序方式
SELECT *
FROM student
ORDER BY age DESC, name ASC;
解析:
本题考察了同时指定多种排序方式的技巧。通过ORDER BY子句可以同时按照年龄降序和姓名升序对查询结果进行排序。
第33题:多表的连接查询
SELECT s.name, c.course_name
FROM student s
INNER JOIN course c
ON s.course_id = c.course_id;
解析:
本题考察了多表的连接查询技巧。通过INNER JOIN子句可以将学生表和课程表连接起来,并查询出每个学生所选课程的名称。
第34题:查询学生信息及其所选课程的学分
SELECT s.name, c.course_name, c.credit
FROM student s
INNER JOIN course c
ON s.course_id = c.course_id;
解析:
本题考察了多表的连接查询技巧和聚合函数的使用。通过INNER JOIN子句可以将学生表和课程表连接起来,并通过SUM函数计算出每个学生所选课程的总学分。
第35题:查询选修了所有课程的学生
SELECT s.name
FROM student s
WHERE NOT EXISTS (
SELECT 1
FROM course c
WHERE NOT EXISTS (
SELECT 1
FROM student_course sc
WHERE s.student_id = sc.student_id
AND c.course_id = sc.course_id
)
);
解析:
本题考察了多表的连接查询技巧和NOT EXISTS子查询的使用。通过NOT EXISTS子查询可以查询出没有选修所有课程的学生,然后通过NOT运算符取反即可查询出选修了所有课程的学生。
结语
以上就是本期MySQL经典50题解析系列的全部内容。希望通过对这些题目的解析,能够帮助您进一步掌握模糊匹配、多排序、多表连接查询等技巧,从而提高您的MySQL数据库操作能力。如果您有任何问题或建议,欢迎在评论区留言。