一、什么是内连接(inner join)
`INNER JOIN`是SQL中的一种连接类型,用于将两个或多个表中的记录根据某个条件进行匹配,并返回匹配的记录。它只返回那些在两个表中都有匹配的记录。
以下是一个示例的`INNER JOIN`查询语句:
SELECT table1.column1, table2.column2
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;
二、内连接(inner join)的用法
下面我们使用3个查询示例,讲解内连接(inner join)在查询中的使用场景。
以下是一份学生信息登记表、一份考试成绩表、一份出生地登记表
表1:学生信息登记表
表2:部分学生成绩表
表3:出生地登记表
1、要求查询出参加了考试的学生信息。
使用'学号'作为连接键,连接两个表
SELECT y.学号, y.姓名, y.总分, x.班级, x.入学日期, x.联系电话 FROM 学籍信息 AS x INNER JOIN 部分学生成绩 AS y ON x.学号 = y.学号;
以上语句表示让表“学籍信息”的列“学号”和表“部分学生成绩”的列“学号”作为匹配的连接键。
可以看到使用inner join (内连接)将两个表连接后,对有考试成绩的学生信息进行了补全
2、要求查询出考试成绩在90分以上的学生信息。
SELECT y.学号, y.姓名, y.总分, x.班级, x.入学日期, x.联系电话 FROM 学籍信息 AS x INNER JOIN 部分学生成绩 AS y ON x.学号 = y.学号 where 总分 >= 90;
以上查询通过设置where过滤条件,查询出了总分大于90分的学生信息。
3、要求查询出考试成绩在90分以上学生的户籍地。
SELECT y.学号, y.姓名, y.总分, x.班级, x.入学日期, x.联系电话, z.户口性质, z.户籍地 FROM 学籍信息 AS x INNER JOIN 部分学生成绩 AS y ON x.学号 = y.学号 inner join 出生地 as z on x.学号 = z.学号 where 总分 >= 90;
以上查询通过连接3个表,设置where过滤条件,查询出了总分大于90分的学生信息。