PostgreSQLFulljoin-PostgreSQL教程|
PostgreSQL Full join
在本节中,我们将了解PostgreSQL Full join的工作原理,它用于在左表或右表记录中存在匹配时返回所有记录。我们还学习了如何在PostgreSQL Full Outer join 子句的帮助下使用table-aliasing、WHERE子句。
什么是 PostgreSQL Full Join 或 Full Outer Join 子句?
PostgreSQL Full Join或Full Outer Join用于在左表或右表记录匹配时返回所有记录。Full Outer Join的主要目标是将PostgreSQL Left Join和PostgreSQL Right Join子句的结果结合起来,并从 join 子句两侧的表中返回所有相似或不匹配的行。
下面的维恩图显示了PostgreSQL 全外连接,我们可以很容易地理解,全外连接**从左表和右表**返回所有数据:
PostgreSQL 全外连接的语法
Full Outer Join 或 Full Join 的语法如下:
SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
在上面的语法中,Full Outer Join关键字与SELECT 命令一起使用,必须写在FROM关键字之后,OUTER关键字是可选的。
我们将按照以下步骤在Full Join 或 Full Outer Join条件的帮助下组合左表和右表:
- 首先,我们将从两个表中定义列列表,我们要在SELECT条件中选择数据。
- 然后,我们将指定Right table,即FROM子句中的表 2。
- 最后,我们将描述左表,即Full Outer Join子句中的表 1,并在ON关键字之后写入连接条件。
PostgreSQL 全连接示例
让我们看一个例子来了解PostgreSQL Full Outer join是如何工作的:
使用 PostgreSQL Full Outer Join 连接两个表
为此,我们将在 CREATE 命令的帮助下创建两个名为Summer_fruits和Winter_fruits 的表,并使用 INSERT 命令插入一些值。
首先,我们将使用 CREATE 命令创建Summer_fruits和Winter_fruits表:
CREATE TABLE Summer_fruits (
SF_ID INT PRIMARY KEY,
Summer_fruits_name VARCHAR (250) NOT NULL);
以下命令用于创建Winter_fruits表:
CREATE TABLE Winter_fruits (
WF_ID INT PRIMARY KEY,
Winter_fruits_name VARCHAR (250) NOT NULL);
的Summer_fruits和Winter_fruits表已上执行上述命令被成功地创建。
一旦生成了两个表,我们就可以使用 INSERT 命令向其中插入一些值,如下所示:
INSERT INTO Summer_fruits (SF_ID, Summer_fruits_name)
VALUES VALUES(1,'Mango'),
(2,'Watermelon'),
(3,'Apples'),
(4,'Guava'),
(5,'Pineapple'),
(6,'Musk Melon');
在下面的命令中,我们将值插入Winter_fruits表中:
INSERT INTO Winter_fruits (WF_ID, Winter_fruits_name)
VALUES(1,'Grape'),
(2,'Apples'),
(3,'Mango'),
(4,'Pears'),
(5,'Pineapple'),
(6,'Cranberries'),
(7,'Bananas');
在Summer_fruits 和 Winter_fruits表中创建并插入值后,我们将在执行以下命令时获得以下输出:
Select * from Summer_fruits;
- 从 Summer_fruits 中选择 *;
输出
表 2:Winter_fruits
Select * from Winter_fruits;
输出
执行上述命令后,我们会从Winter_fruits表中获取数据:
以下查询用于从两个表(Summer_fruits和Winter_fruits)中选择记录:
SELECT SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name
FROM Summer_fruits
FULL JOIN Winter_fruits
或者我们在上面的查询中使用Full Outer Join 关键字代替Full Join 关键字,我们将得到类似的输出:
ON SF_ID = WF_ID;
SELECT SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name
FROM Summer_fruits
Full Outer Join Winter_fruits
ON SF_ID = WF_ID;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL 全外连接的工作
- 它用于获取左表(Summer_fruits)和右表(Winter_fruits)的记录。
- 如果Summer_fruits 中的一行(Table1 或 Left Table )与Winter_fruits中的一行(Table2 或 Right table )匹配,则结果行将包含来自两个表的行列的列。
- 如果联接表中的行不相似,则完全外部联接为表的每一列放置NULL 值。
使用 PostgreSQL 完全连接的表别名
我们将使用表别名来分配连接表的短名称,以使命令更易于理解,因为有时编写完整的表会导致我们进行繁琐的过程。
在下面的命令中,我们将使用表别名,它返回类似的结果:
SELECT s.SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name
FROM Summer_fruits s
FULL JOIN Winter_fruits w
ON s.SF_ID =w.WF_ID;
输出
执行上述命令后,我们将得到以下输出:
PostgreSQL 完全连接使用 where 子句
我们还可以使用带有 WHERE 条件的完全连接。WHERE 子句允许我们返回过滤器结果。
在下面的示例中,我们将从Summer_fruits和Winter_fruits两个表中选择行,其中Summer_fruits_names不等于Mango:
SELECT SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name
FROM Summer_fruits
FULL JOIN Winter_fruits
ON SF_ID = WF_ID
WHERE Summer_fruits_name != 'Mango';
输出
执行上述命令后,我们将得到以下输出:
概述
在PostgreSQL Full join 或 Full Outer Join部分,我们学习了以下主题:
- 我们使用Full join子句从两个表或两个以上的表中选择数据。
- 我们使用了带有表别名的完整连接条件和 WHERE 子句。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|