SQLite Join 学习笔记

什么是 SQLite Join?

在 SQLite 中,Join 是指将两个或多个表按照某个共同列的值进行关联,并返回满足条件的结果集。通过 Join 可以将来自不同表的数据进行联合查询,从而得到更全面、更准确的查询结果。

SQLite 支持多种 Join 类型,包括 Inner Join、Left Join、Right Join 等。

Inner Join

Inner Join(内连接)是最常用的 Join 类型之一。它会匹配两个表中符合条件的行,并将它们组合成一个新的结果集。

例如,我们有两张表:studentsscores,分别记录学生信息和考试成绩。这两张表都有一个共同的字段 id,可以用这个字段将两张表进行 Join:

sqlCopy Code
SELECT students.name, scores.score FROM students INNER JOIN scores ON students.id = scores.student_id;

上述 SQL 查询中,INNER JOIN 表示进行 Inner Join 操作,studentsscores 分别是需要联合查询的两张表,ON students.id = scores.student_id 表示根据 idstudent_id 这两个字段进行 Join,SELECT 语句则指定了查询结果展示的字段。

Left Join

Left Join(左连接)会将左表中的所有数据全部保留,并根据条件匹配右表中的数据。如果右表中找不到匹配的数据,则用 NULL 值填充。

例如,我们有两张表:studentsscores,分别记录学生信息和考试成绩。这两张表都有一个共同的字段 id。我们想要查询所有学生的名字以及他们的考试成绩,包括没有参加考试的学生,可以使用 Left Join:

sqlCopy Code
SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.id = scores.student_id;

上述 SQL 查询中,LEFT JOIN 表示进行 Left Join 操作,studentsscores 分别是需要联合查询的两张表,ON students.id = scores.student_id 表示根据 idstudent_id 这两个字段进行 Join,SELECT 语句则指定了查询结果展示的字段。

Right Join

Right Join(右连接)与 Left Join 相反,会将右表中的所有数据全部保留,并根据条件匹配左表中的数据。如果左表中找不到匹配的数据,则用 NULL 值填充。

例如,我们有两张表:studentsscores,分别记录学生信息和考试成绩。这两张表都有一个共同的字段 id。我们想要查询所有参加过考试的学生的名字以及他们的考试成绩,可以使用 Right Join:

sqlCopy Code
SELECT students.name, scores.score FROM students RIGHT JOIN scores ON students.id = scores.student_id;

上述 SQL 查询中,RIGHT JOIN 表示进行 Right Join 操作,studentsscores 分别是需要联合查询的两张表,ON students.id = scores.student_id 表示根据 idstudent_id 这两个字段进行 Join,SELECT 语句则指定了查询结果展示的字段。

总结

Join 是关系型数据库中的重要操作之一,可以将来自不同表的数据进行联合查询,从而得到更全面、更准确的查询结果。SQLite 支持多种 Join 类型,包括 Inner Join、Left Join、Right Join 等。在使用 Join 操作时,需要注意两个表之间要有共同的字段,并且 Join 的条件要正确匹配。