Myqsl语句经典例题
目录
这里是mysql例题导入代码
|
|
###例题列表
1:查询课程01比课程02成绩高的学生信息及课程分数
解题代码
|
|
2:查询同时存在01课程和02课程的情况
解题代码
|
|
3:查询存在01课程但可能不存在02课程的情况(不存在时显示为null)
解题代码
|
|
4:查询不存在01课程,但存在02课程的情况
解题代码
|
|
解题代码
|
|
解题代码
#解题思路:先查询sid,然后用sid进行匹配;group by配合平均函数使用;
SELECT b.sid,b.Sname,a.avg_score
FROM
(SELECT sid,AVG(score) as avg_score FROM sc GROUP BY SId HAVING avg_score>=60) a
INNER JOIN student b
ON a.sid=b.sid
解题代码
#查询在 SC 表存在成绩的学生信息,这题目主要巩固group by的括号内严谨写法,还有b.可作为查询条件.
select b.
FROM
(SELECT
SId from
sc GROUP BY sid) a
LEFT JOIN student b
on a.Sid=b.SId;
解题代码
#查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)
SELECT a.SId as 学生编号,a.Sname as 学生姓名,b.COUNT_CID as 选课总数,b.SUM_SCORE
FROM
student a
LEFT JOIN
(SELECT
SId,SUM(score) AS SUM_SCORE,COUNT(CId) AS COUNT_CID
FROM
sc
GROUP BY SId) b
ON a.SId=b.SId
解题代码
#这个案例是用in来实现的;
SELECT a.*
FROM student a
WHERE a.SId IN (SELECT SId from sc GROUP BY SId);
#上面用了 where in 在什么什么里面查找;
#还可以用exist来判断存在;
SELECT
a.*
FROM
student a
where EXISTS (SELECT * FROM sc B WHERE a.SId=b.SId)
#用inner join实现
SELECT a.*
FROM student a
INNER JOIN (SELECT sid FROM sc GROUP BY sid) b
ON a.sid=b.SId;
解题代码
#查询姓李的老师都有谁?
SELECT * FROM teacher WHERE Tname LIKE ‘李%';
#查询数量的话
SELECT COUNT(1) as cons FROM teacher WHERE Tname LIKE ‘李%';

解题代码