PostgreSQL教程

PostgreSQL INNER JOIN

在本节中,我们将了解 PostgreSQL INNER Join的工作原理,该操作用于从许多表中选择数据。我们还将学习如何使用 WHERE子句,USING子句,运算符以及如何联接三个表,
什么是PostgreSQL INNER JOIN子句?
在关系数据库中,数据自然分布在一个以上的表中,并且要选择聚合数据,我们经常需要从各种表中选择数据。
PostgreSQL内连接仅用于返回那些表表中的记录,等同于定义的条件,并隐藏其他行和列。在 PostgreSQL 中,它是默认的Join,因此不必使用 Inner Join
下面的维恩图显示了PostgreSQL INNER Join,在这里我们可以很容易地理解到 INNER Join仅返回Table1和Table2中的匹配记录:
PostgreSQL INNER Join

PostgreSQL INNER Join语法

INNER Join关键字与SELECT一起使用命令,并且必须在 FROM 子句之后编写。
以下语法对其进行了更清晰的描述:
SELECT [column_list |*]
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column.name; 
带有USING子句的PostgreSQL INNER Join的语法
SELECT [column_list |* ]
FROM table1
INNER JOIN table2
USING (column.name);
带有WHERE子句的PostgreSQL INNER Join的语法
SELECT [column_list |*]
FROM table1, table2
WHERE table.column_name=table2.column_name;
我们将按照以下步骤将表A与表B连接起来:
首先,我们将在两个表(表1和2)中定义列列表,我们要在其中选择 SELECT 条件的数据。 然后,我们将定义基本表,即 FROM 子句中的表1、 最后,我们将在 INNER JOIN条件下描述第二个表(表2),并在 ON 之后写入 join 条件>关键字。
注意: Join条件返回Inner条件中描述的表之间的相似行。

PostgreSQL INNER Join示例

让我们看一个示例来了解 PostgreSQL INNER Join的工作方式:

使用PostgreSQL INNER JOIN连接两个表

为此,我们将创建两个名为 Employee 和 department 表,借助CREATE命令并使用 INSERT命令 。
首先,我们将使用CREATE命令创建 雇员和department 表:
create table Employee(
emp_id int primary key, 
emp_fname varchar not null, 
emp_lname varchar not null, 
location varchar(30) );
以下命令用于创建 department 表:
Create table department  
(emp_id int primary key,
 dept_id int not null,
 dept_name varchar NOT null);
执行上述命令后,已成功创建 Employee and department 表。
两个表都生成后,我们准备使用 INSERT 命令向其中插入一些值,如下所示:
INSERT INTO Employee (emp_id, emp_fname, emp_lname, location)
VALUES
(1, 'John', 'Smith', 'New York'),
(2, 'Mia', 'Clark','Florida'),
(3, 'Noah','Rodriguez','Chicago'),
(4, 'Ava','Gracia','Houston'),
(5,'James','Luther','Los Angeles');
在以下命令中,我们将值插入 department 表中:
INSERT INTO department (emp_id, dept_id, dept_name)
VALUES
(1, 1, 'ACCOUNTING'),
(2, 2,'SALES'),
(3, 3,'RESEARCH'),
(4, 4,'OPERATIONS'),
(5, 5,'HUMAN RESOURCES');
在 员工和department 表中创建并插入值之后,我们将获得以下输出:
表1: 员工
PostgreSQL INNER Join
表2: department
PostgreSQL INNER Join
下面的查询用于从两个表(雇员和department)中选择记录:
SELECT emp_fname, emp_lname,location,dept_name
FROM Employee  
INNER JOIN department   
ON Employee.emp_id= department.dept_id;  
输出
一旦执行了上述命令,我们将得到以下结果:
PostgreSQL INNER Join

PostgreSQL INNER Join的工作

INNER Join用于分析表1 ( 雇员 )中的每一行,并比较 emp_id 中的值strong>列,其值在表2(department)的每一行的 dept_id 中。 如果这些记录相似,则 INNER Join将创建一个新行,其中包含来自两个表的列,并将特定行增强到输出中。 或者如果这些记录不相似,则内部Join会忽略它们,并移至下一行。

使用PostgreSQL INNER Join的表别名

通常,我们要联接的表将具有类似名称的列,例如 emp_id 列。
如果我们在命令中引用不同表中具有相似名称的列,则将发生错误,并且为了避免发生此特定错误,我们需要使用以下语法。
table_name.column_name
我们将使用表别名实时分配联接表的短名称,以使该命令更易于理解。
在以下命令中,我们将使用表别名,它返回与上面类似的结果:
SELECT e.emp_id, emp_fname, emp_lname,location,dept_name   
FROM Employee e 
INNER JOIN department d 
ON e.emp_id = d.dept_id;
输出
一旦执行了上述命令,我们将获得以下输出:
PostgreSQL INNER Join

使用USING子句的PostgreSQL INNER Join

在这里,我们将了解PostgreSQL INNER Join与 USING 子句一起使用,因为有时两个表中的列名都相似。这就是为什么我们可以使用 USING 子句获取值的原因。
在下面的示例中,我们将 USING 子句用作两个表具有相似的 emp_id 列。
SELECT emp_id, emp_fname,location, dept_name    
FROM Employee  
INNER JOIN department   
USING (emp_id);  
输出
执行上面的语句后,我们将得到以下结果:
PostgreSQL INNER Join

使用WHERE子句的PostgreSQL INNER Join

我们还可以使用 INNER Join并具有WHERE条件。 WHERE 子句允许我们返回过滤器结果。
在下面的示例中,我们将从两个表 Employee 和 department 中选择行,其中 dept_name 等于销售:
SELECT emp_fname, dept_id, dept_name, location 
FROM Employee 
INNER JOIN department  
USING (emp_id) WHERE dept_name ='SALES';
输出
成功执行以上命令后,将提供以下输出:
PostgreSQL INNER Join

使用PostgreSQL INNER JOIN联接三个表

在上一节中在本教程中,我们已经创建了两个表,分别为 Employee 和 department 。现在,我们要再联接一个表,并借助 INNER Join来从该特定表中获取记录。
因此,为此,我们将再创建一个表为 通过使用CREATE命令来完成作业 ,如以下命令所示:
CREATE TABLE Jobs(
job_id int primary key, 
job_description varchar not null);
成功创建 Jobs 表后,我们将在INSERT命令的帮助下向其中插入一些值,如以下命令所示:
INSERT INTO Jobs (job_id, job_description)
VALUES (1, 'Training'),
(2, 'Management'),
(3, 'Executive'),
(4, 'Non-Executive');
在工作表中创建并插入值之后,我们将获得以下输出:
表3: 工作
PostgreSQL INNER Join
以下命令用于加入三个表,例如 Employee,department和Jobs 。因此,我们将在第一个INNER JOIN 子句之后使用第二个INNER JOIN 子句:
SELECT emp_id, emp_fname, dept_name, location, job_description
FROM Employee 
INNER JOIN department USING (emp_id) 
INNER JOIN Jobs  
ON department.emp_id = jobs.job_id
ORDER BY emp_id;
输出
一旦实现了上述查询,我​​们将得到以下结果:
PostgreSQL INNER Join
注意: 要连接三个以上的表,我们可以使用上述方法。

使用运算符的PostgreSQL INNER Join

PostgreSQL允许许多运算符,我们可以将其与 INNER Join一起使用,例如等号(=),不等于(!=),大于(>),小于(<)等。
在下面的示例中,我们使用的不是等于(!=) 带有 INNER Join的运算符:
SELECT emp_fname, emp_lname,location,dept_name
FROM Employee  
INNER JOIN department   
ON Employee.emp_id= department.dept_id   
WHERE dept_name != 'SALES';
输出
一旦单击执行按钮,我们将得到以下显示这些内容的输出 dept_name 不等于 SALES 的值。
PostgreSQL INNER Join

概述

在 PostgreSQL INNER Join部分中,我们学习了以下主题:
我们使用PostgreSQL INNER Join子句从两个或两个以上表中选择数据。 我们将PostgreSQL INNER Join条件与 WHERE子句,USING子句,运算符和表别名一起使用ng 。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4