内连接返回两表中存在匹配记录的数据,语法为select 列名 FROM 表1 INNER JOIN 表2 ON 条件;例如查询学生及其成绩:SELECT students.name, grades.subject, grades.score FROM students INNER JOIN grades ON students.id = grades.student_id;其特点为仅保留交集、顺序不影响结果、需指定连接条件避免笛卡尔积,是sql多表查询的基础且性能良好。

mysql内连接(INNER JOIN)是用来从两个或多个表中查询同时在这些表中存在匹配记录的数据。它只返回那些在指定连接条件下的列有对应值的行,如果某行在一个表中没有与另一个表匹配的记录,那么这行就不会出现在结果中。
内连接的基本语法
使用 INNER JOIN 进行表连接的常见写法如下:
SELECT 表1.列名, 表2.列名 FROM 表1 INNER JOIN 表2 ON 表1.公共列 = 表2.公共列;
其中 ON 子句定义了连接条件,通常是两个表之间的外键关系或逻辑关联字段。
举个实际例子
假设有两个表:students(学生表)和 grades(成绩表)。
- students 表有字段:id, name
- grades 表有字段:student_id, subject, score
我们想查出每个学生的姓名及其对应的科目和分数,可以这样写:
SELECT students.name, grades.subject, grades.score FROM students INNER JOIN grades ON students.id = grades.student_id;
这条语句只会返回那些既在 students 表中有记录、又在 grades 表中有成绩的学生信息。如果某个学生没有成绩,他不会出现在结果里。
内连接的关键特点
- 只保留两表中“交集”部分的数据
- 连接顺序不影响结果(A INNER JOIN B 和 B INNER JOIN A 结果一致)
- 必须明确指定连接条件(ON 后面的内容),否则会导致笛卡尔积
- 性能较好,是日常开发中最常用的连接方式之一
基本上就这些。内连接不复杂,但它是多表查询的基础,理解清楚对写SQL非常重要。


