PostgreSQL Inner Join内连接

在本节中,我们将了解PostgreSQL 内连接的工作原理,它用于从多个表中选择数据。我们还学习了如何使用WHERE 子句、USING 子句、运算符和连接三张表, PostgreSQL 内连接中的表别名。

什么是 PostgreSQL INNER JOIN 子句?

在关系型数据库中,数据自然分布在多个表中,而要选择聚合数据,我们往往需要从各个表中选择数据。

PostgreSQL Inner Join用于只返回表中符合定义条件的记录,隐藏其他行和列。在PostgreSQL中,它作为默认的 Join,因此不必在查询中使用Inner Join关键字。

下面的维恩图展示了 PostgreSQL 的内部连接,我们可以很容易地理解内部连接只返回表 1 和表 2 中匹配的记录:

PostgreSQL Inner Join内连接语法

Inner Join关键字与SELECT命令一起使用,必须写在FROM子句之后。

下面的语法更清楚地描述了它:

SELECT [column_list |*]  
FROM table1  
INNER JOIN table2  
ON table1.column_name=table2.column.name;   

PostgreSQL Inner Join with USING 子句的语法

SELECT [column_list |* ]  
FROM table1  
INNER JOIN table2  
USING (column.name);  

PostgreSQL inner Join with WHERE 子句的语法

SELECT [column_list |*]  
FROM table1, table2  
WHERE table.column_name=table2.column_name;  

我们将按照以下步骤将表 A 与表 B 连接起来:

  • 首先,我们将从两个表(表 1 和表 2)中定义列列表,我们要在SELECT条件中选择数据。
  • 然后,我们将定义基表,即FROM子句中的表 1。
  • 最后,我们将在INNER JOIN条件中描述第二张表(表2) ,并将连接条件写在ON关键字之后。

PostgreSQL 内连接示例

让我们看一个例子来理解PostgreSQL 内部连接是如何工作的:

使用 PostgreSQL INNER JOIN 连接两个表

为此,我们将在 CREATE 命令的帮助下创建名为Employee和department的两个表,并使用INSERT 命令插入一些值。

首先,我们将使用 CREATE 命令创建Employee 和 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表和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');  

在下面的命令中,我们在部门表中插入值:

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');  

在Employee 和 department表中创建并插入值后,我们将获得以下输出:

表一:员工

表2:部门

下面的查询用于从两个表(Employee和department)中选择记录:

SELECT emp_fname, emp_lname,location,dept_name  
FROM Employee    
INNER JOIN department     
ON Employee.emp_id= department.dept_id;    

执行上述命令后,我们将得到以下结果:

热门文章

优秀文章