sqlite Join
sqlite的Join子句用于结合两个或多个数据库中的表的记录。Join是一种通过共同值来结合两个表中字段的手段。
SQL定义了三种主要的类型的连接:
1. 交叉连接 - CROSS JOIN
2. 内连接 - INNER JOIN
3. 外连接 - OUTER JOIN
1. 交叉连接 - CROSS JOIN
交叉连接(CROSS JOIN)是把第一个表的第一行与第二个表的第一行进行匹配。如果两个输入表分别有x和y行,则结果表中有x * y行。由于交叉链接有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。
交叉连接语法:
SELECT ID,NAME,AGE
FROM Student
CROSS JOIN Class;
2.内连接 - INNER JOIN
内连接是根据连接的谓词结合两个表(table1和table2)的列值来创建一个新的结果表。查询会把table1中的每一行与table2中的每一行进行比较,找到所有满足连接的谓词大的行匹配对。当满足连接谓语是,A和B行的每一个匹配的列值会合并成一个结果行。
内连接语法:
select ID,Name,Age
FROM Student
INNER JOIN Name
ON Student.id=Name.studentId;
3. 外连接 - OUTER JOIN
外连接(OUYER JOIN)是内连接(INNER JOIN)的扩展。虽然SQL标准点皈依了三种类型的外连接:LEFT、RIGHT,FULL,但SQlite只支持左外连接(LEFT OUTER JOIN)
左外连接语法:
SELECT Id,Name,Age
FROM Class
LEFT OUTER JOIN Name
ON Student.id=Name.studentId;