SQL——多表查询

在SQL语言中,多表查询大致分为三种类型:添加表、连接表和应用连接。
下面详细解释每种类型及其使用方法。
1、使用UNION语句添加表。
UNION语句可以将两个或多个SELECT语句的结果集组合成一个结果集。
使用UNION时,结果集必须具有相同的列数,并且这些列的类型必须一致。
UNION还会自动删除重复记录。
要保留两个表中的重复值,需要在UNION后面添加'ALL'关键字。
2.使用JOIN语句连接表。
JOIN语句用于连接两个或多个表中的记录以形成结果集。
常用的连接类型包括INNERJOIN、LEFTJOIN、RIGHTJOIN和CROSSJOIN。
1.INNERJOIN选择并连接两个表中同时存在的数据。
2.LEFTJOIN(或RIGHTJOIN)选择表左(或右)侧的数据并将其与右(或左)表中的规范化数据连接。
3.CROSSJOIN将一个表中的每一行与另一个表中的每一行组合起来。
3.连接应用示例。
1、通过多表连接查询所有学生的学号、选课数、总成绩。
2、查询所有平均分在85分及以上的学生的学号和平均分。
这也包括连接。
4、CASE表达式用于条件判断。
CASE表达式允许在SQL中进行条件计算并返回不同的值。
CASE语句由CASE、WHEN和THEN关键字组成,允许您指定多个条件分支并在满足条件时执行其操作。
最后,我们使用END关键字终止CASE语句。
使用CASE表达式时,应记住以下几点:1.ELSE关键字允许您在不满足条件时指定默认值。
我们建议在CASE语句中使用ELSE。
2.要正确结束CASE语句,必须在CASE语句末尾使用END关键字。
5.练习。
在现实环境中练习SQL是个好主意。
例如,访问sqlzoo.net/wiki/The_JOI...并完成练习。

SQL:多表查询:内联结、左联结、右联结,case表达式

在SQL语言中,多表查询是构建复杂查询的核心技术,包括内连接、左连接、右连接、case表达式等。
以下内容将逐步详细解释这些概念及其应用。
首先,表添加涉及连接两个表。
此操作通常通过union语句来实现,它将两个表中的数据连接在一起,但必须注意删除重复的行。
表连接是多表查询的基础。
内部联接用于查找同时存在于两个表中的数据。
例如,通过以学号作为联接条件,将学生表和成绩表进行内联接,就可以检索到所有学生的课程及其成绩。
左连接显示左表中的所有数据,右表只显示与左表相关的数据,如果右表缺少左表对应的数据,则右表中对应的列将显示为NULL。

结果。
以学号为连接条件,将学生表和成绩表进行左连接,得到所有学生的学号、姓名和缺失分数。
右连接(rightjoin)与此类似,但它是基于右表,当左表缺少相关数据时显示NULL。
同样,以学号为连接条件,将students表和results表直接连接,得到所有科目的成绩,包括缺失的部分。
全连接(fulljoin)将左表和右表的所有数据连接起来,如果一侧缺少相关数据,就会显示NULL。
虽然MySQL不直接支持全连接,但是将内连接与左连接、右连接结合起来也可以达到同样的效果。
连接应用案例包括:学生证申请、所有申请学生证学生的选课数和总成绩、平均成绩大于85的所有学生的平均绩点以及查询选科状态;ID、姓名、课程编号和课程名称。
Case表达式用于根据条件返回特定值。
语法格式为:casewhen条件1then值1when条件2then值2...else默认值end。
例如询问每个分数是及格还是不及格、统计每个科目不同分数的人数、根据球队名称显示球员信息等。
最后介绍一下sqlzoo网站上的练习,旨在帮助用户熟练使用连接和case表达式来解决实际问题。
这些问题涵盖了从基本的连接操作到连接和case表达式结合的复杂应用,帮助用户深入理解SQL在实际场景中的应用。