sql之查询语句案例

生成一个统计结果信息表
—生成的每个同学的总分信息表:学号、姓名、总分
代码演变:

SELECT S.stuNo,S.stuName  FROM Results R
INNER JOIN 
Students S
ON(R.stuno=S.stuNo)
WHERE R.score IS NOT NULL OR R.score!=0 

在这里插入图片描述

添加分组:

SELECT S.stuNo,S.stuName FROM Results R
INNER JOIN 
Students S
ON(R.stuno=S.stuNo)
WHERE R.score IS NOT NULL OR R.score!=0 
GROUP BY S.stuNo,S.stuName

将具有相同的stuNo和stuName数据的记录划分为一组

在这里插入图片描述
添加聚合函数:
–采用内连接:

SELECT S.stuNo,S.stuName,SUM(R.score) AS TotalScores  FROM Results R
INNER JOIN 
Students S
ON(R.stuno=S.stuNo)
WHERE R.score IS NOT NULL OR R.score!=0 
GROUP BY S.stuNo,S.stuName
ORDER BY TotalScores DESC

在这里插入图片描述
–采用外连接方式:
–右外连接:
起别名的两张方式:
–1.TotalScores=SUM(R.score)
–2.SUM(R.score) AS TotalScores

SELECT S.stuNo,S.stuName,SUM(R.score) AS TotalScores  FROM Results R
LEFT JOIN 
Students S
ON(R.stuno=S.stuNo)
WHERE R.score IS NOT NULL OR R.score!=0 
GROUP BY S.stuNo,S.stuName
ORDER BY TotalScores DESC

注意点:
**内连接:**完全匹配,不会产生NULL(但可能表中的字段本身就是NULL)

使用左/右外连接时,尽量:左外连接,左表是主键表。
右外连接,右表是主键表。
这时候查询出来的从表中的字段可能存在NULL值(没有匹配上,而不是字段本身就是NULL),所以需要判断一下(一般使用主键表的主键列进行判断,也不一定)

发布了98 篇原创文章 · 获赞 1 · 访问量 854

猜你喜欢

转载自blog.csdn.net/qq_34550459/article/details/105585266
今日推荐