在 SQL 中,关联用于组合来自不同表的相关数据。有几种不同的关联 ,每种 都有其自身的用途和优势。
内连接 (INNER JOIN)
内连接是最常见的关联类型,它仅返回出现在两张表中的行。换句话说,它在两个表上找到匹配的行并返回其组合结果。
sql
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id;
左外连接 (LEFT OUTER JOIN)
左外连接返回左表的所有行,即使它们在右表中没有匹配的行。右表中匹配的行也会被返回。
sql
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.id = table2.id;
右外连接 (RIGHT OUTER JOIN)
右外连接与左外连接类似,但它返回右表的所有行,即使它们在左表中没有匹配的行。左表中匹配的行也会被返回。
sql
SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.id = table2.id;
全外连接 (FULL OUTER JOIN)
全外连接返回来自两张表的全部行,即使它们在另一张表中没有匹配的行。
sql
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.id = table2.id;
自关联
自关联是一种特殊类型的关联,其中表与自身的连接。它用于查找表中的重复项或分组记录。
sql
SELECT *
FROM table1
INNER JOIN table1 AS t2
ON table1.id = t2.id;
关联术语
理解关联术语很重要:
* **外键 (FK)**:将子表中的字段与父表中的字段关联的字段。
* **主键 (PK)**:唯一标识表中每一行的字段。
* **主表**:在关联中提供外键的表。
* **子表**:在关联中引用主表外键的表。
* **关联条件**:用于指定关联表之间的连接条件的语句。