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;
执行上述命令后,我们将得到以下结果:
热门文章
优秀文章