一、什么是内连接(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分的学生信息。