PostgreSQL教程

PostgreSQL NATURAL JOIN

在本节中,我们将了解 PostgreSQL NATURAL JOIN的工作原理,该连接用于连接两个或多个两个表。

什么是PostgreSQL NATURAL JOIN子句?

NATURAL JOIN是多个表的组合,并且输出,我们将获得新行,该行用于连接每个表的列。并且它还用于组合表,从而根据组合表中的相似列名称创建隐式联接。
换句话说,我们可以说 PostgreSQL自然联接子句实质上是为一组行创建一个临时表,以处理几个(两个或多个)表。
这些表将在连接条件中指定,并且至少具有一个共同的列,并且这些标准列之间应该有联系。
默认情况下, PostgreSQL 将使用INNER JOIN操作。它可以与 LEFT JOIN , INNER JOIN 或 RIGHT JOIN ,但是联接的类型必须为

PostgreSQL NATURAL JOIN的语法

NATURAL JOIN关键字与 SELECT命令,并且必须写在 FROM 关键字之后。
SELECT [Column_list |*]
FROM Table1
NATURAL [INNER, LEFT, RIGHT] JOIN Table2;
注意: 在上述语法中,我们也可以使用星号(*)代替Column-list,因为星号将生成包含以下字段的输出:
两个表都有一个唯一列,其中包含 不同列名称。 当表具有公用字段并且两列具有相同名称时。

PostgreSQL NATURAL JOIN的示例

让我们看一个示例来了解 PostgreSQL NATURAL JOIN的工作原理:

要使用PostgreSQL NATURAL JOIN来连接两个表

为此,我们将创建两个名为 Course_categories和Course 表的表借助 CREATE 命令并使用 INSERT 命令。
首先,我们将使用 CREATE 命令创建 Course_categories和Course 表:
以下语句用于创建 Course_categories 表:
CREATE TABLE Course_categories (
Course_category_id serial PRIMARY KEY,
Course_category VARCHAR NOT null,
Course_id int NOT null,
FOREIGN KEY (Course_id) REFERENCES Course(Course_id)
);
以下命令用于创建 课程 表:
CREATE TABLE Course (
Course_id serial PRIMARY KEY,
Course_name VARCHAR NOT null
);
执行上述命令后,已成功创建 Course_categories和Course 表。
在上述表中,所有课程类别具有零个或几个课程,但是此处所有课程都链接到唯一的课程类别。
在 Course_catagories 表中, Cousre_id 列是外键,称为主键 Course 表中的。
我们将使用 PostgreSQL Natural Join 作为 Course_id 是两个表中的标准列。
两个表都生成后,我们准备使用 INSERT 命令向其中插入一些值,如下所示:
在以下命令中,我们将值插入 Course_catagories 表中:
INSERT INTO Course_categories (Course_category, Course_id)
VALUES
('Adobe Photoshop', 1),
('Adobe Illustrator', 1),
('JavaScript', 2),
('Advance CSS', 2),
('Machine Learning', 2),
('AWS', 3),
('CCNA', 3),
('Kubernetes', 3),
('Social Media Marketing', 4),
('Digital Marketing', 4);
在以下命令中,我们将值插入 Course 表中:
INSERT INTO Course (Course_name)
VALUES
('Design'),
('Development'),
('IT & Software')
('Marketing');
在 课程和课程 表中创建并插入值之后,我们将使用 SELECT 命令在特定表:
表1: 课程类别
Select * from Course_categories;
输出
执行上述命令后,我们将从 Course_categories 表中获取以下数据:
PostgreSQL NATURAL JOIN
表2: 课程
Select * from Course;
输出
执行上述命令后,我们将从 Course 表中获得以下记录:
PostgreSQL NATURAL JOIN
以下查询使用 PostgreSQL NATURAL JOIN子句合并 Course和Course_categories表 中的记录。
SELECT * 
FROM Course_categories
NATURAL JOIN Course;
输出
在执行上述命令时,我们将得到以下结果:
PostgreSQL Natural Join
上面的命令与下面的命令相似,我们使用 INNER JOIN 子句代替 Natural Join关键字。
SELECT * 
FROM Course_categories
INNER JOIN Course USING (Course_id);
输出
执行上述命令后,我们将获得以下命令:
PostgreSQL自然联接
在 PostgreSQL自然联接中,似乎不需要描述Join子句,因为它使用了隐式联接条件取决于"公用"列。
但是我们应该尽可能地忽略使用自然联接,因为有时它可能导致无法预料的结果。
让我们看一个示例,如果两个表中都有两个标准列。因此,为此,我们将使用 员工和department 表:

员工表的结构

我们将通过如下所示的Select命令来查看employee表的结构:
Select * from employee;
输出
执行上述语句后,我们将得到以下结果:
PostgreSQL Natural Join

department表的结构

我们将看到 department的结构 表,方法是使用Select命令,如下所示:
Select * from department;
输出
执行上述语句后,我们将得到以下结果:
PostgreSQL Natural Join
正如我们在上面的屏幕截图中所看到的, 员工和department 表具有相同的 emp_id 列,因此我们可以使用 Natural Join子句在以下命令中合并这些表:
SELECT * 
FROM employee
NATURAL JOIN department;
输出
在执行上述命令时,我们将获得以下输出:
PostgreSQL Natural Join
在上面的输出中,我们将获得空表,因为两个表还具有另一个称为 emp_fname 的列。 strong>,并且不能用于PostgreSQL 自然联接。但是自然联接条件仅使用 emp_fname 列。

概述

在PostgreSQL自然联接中部分,我们学习了以下主题:
在 PostgreSQL NATURAL JOIN部分中,我们学习了以下主题:
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4