在PostgreSQL中,有以下类型的连接:
- 内连接(INNER JOIN)
- 左外连接(LEFT OUTER JOIN/LEFT JOIN)
- 右外连接(RIGHT OUTER JOIN/RIGHT JOIN)
- 全连接(FULL OUTER JOIN/FULL JOIN)
- 跨连接(CROSS JOIN)
一,内连接(INNER JOIN)
PostgreSQL内部连接也被称为连接或简单连接。 这是最常见的连接类型。 此连接返回满足连接条件的多个表中的所有行。
关系图:
语法:
SELECT table1.columns, table2.columns
FROM table1
INNER JOIN table2
ON table1.common_filed = table2.common_field;
创建教师表:
学生表:
示例:
外连接是内联的延伸,外连接有三种类型。它们分别如下 -左外连接,右外连接,全外连接
二,左外连接(LEFT OUTER JOIN)
左外连接返回从“ON”条件中指定的左侧表中的所有行,只返回满足条件的另一个表中的行,没有匹配上的项全留为空值。
关系图:
语法:
SELECT table1.columns, table2.columns
FROM table1
LEFT OUTER JOIN table2
ON table1.common_filed = table2.common_field;
示例:
三,右外连接(RIGHT OUTER JOIN)
右外连接返回从“ON”条件中指定的右侧表中的所有行,只返回满足条件的另一个表中的行。
如下图中所表示:
语法:
SELECT table1.columns, table2.columns
FROM table1
RIGHT OUTER JOIN table2
ON table1.common_filed = table2.common_field;
关系图:
示例:
四,全连接(FULL OUTER JOIN)
全外连接从左表和左表中返回所有行。 它将NULL置于不满足连接条件的位置。
语法:
SELECT table1.columns, table2.columns
FROM table1
FULL OUTER JOIN table2
ON table1.common_filed = table2.common_field;
关系图:
示例:
五,跨连接(CROSS JOIN)
PostgreSQL跨连接(CROSS JOIN)将第一个表的每一行与第二个表的每一行相匹配。 它也被称为笛卡尔积。 如果table1具有“x”行,而table2具有“y”行,则所得到的表将具有(x * y)行。
语法:
SELECT coloums
FROM table1
CROSS JOIN table2
示例: