SQL 完全外连接

SQL 完全外连接

本文将通过简单且合适的示例向您清楚地解释FULL OUTER JOIN运算符。在进入主题之前,让我们简要了解一下FULL OUTER JOIN运算符。

什么是FULL OUTER JOIN运算符?

全外连接是一种连接操作,它合并了两个表的结果集,包括来自两个表的匹配和非匹配行。当两个表都满足请求的连接条件时,返回两个表中的所有行,并且如果表之间没有匹配的行,则用NULL值填充非匹配表的列。全外连接操作的功能如下所示:

SQL 完全外连接

语法:

完全外连接操作的基本语法如下所示,并对其中每个术语进行了解释

SELECT * FROM table1
FULL OUTER JOIN table2
ON table1.column = table2.column;

这里table 1和table 2是两个需要基于特定条件连接的表。

匹配的行: 当table1的一行与table2的一行根据连接条件匹配时,结果集中包含来自两个表的列。

table 1中的非匹配行: 如果在table 1中的一行没有匹配,使用NULL值填充来自table 2的列。

table 2中的非匹配行: 如果在table 2中的一行没有匹配,使用NULL值填充来自table 1的列。

让我们来看一些例子,更清楚地理解全外连接操作的工作原理。

例子 1:

考虑两个表Student和Department,用于演示Full Outer Join运算符的运行。首先让我们创建这两个表并插入值。

CREATE TABLE Student(ID VARCHAR(20), Name VARCHAR(50), Total_marks INT(20), Contact_no INT(20)); 

现在,我们将要将值插入到这个表中。

INSERT INTO Student values("1", "Ram", 500, 9127563212);
INSERT INTO Student values("2", "Joseph", 476, 8123456782);
INSERT INTO Student values("3", "Rehman", 389, 9814569871);
INSERT INTO Student values("4", "Priyanka", 450, 7891234561);
INSERT INTO Student values("5", "Saleem", 534, 7765123456);
INSERT INTO Student values("6", "Dhanush", 550, 8877123590);

学生表将如下所示:

SELECT * FROM Student;
ID Name Total_marks Contact_no
1 Ram 500 9127563212
2 Joseph 476 8123456782
3 Rehman 389 9814569871
4 Priyanka 450 7891234561
5 Saleem 534 7765123456
6 Dhanush 550 8877123590

现在,我们将创建一个Department表。

CREATE TABLE Department(ID VARCHAR(20), department_name VARCHAR(20), department_id INT(10));

现在,我们将要向其中插入值。

INSERT INTO Department values("2", "CSE", 122);
INSERT INTO Department values("3", "ECE", 123);
INSERT INTO Department values("9", "IT", 126);

部门表将如下所示:

SELECT * FROM Department;
ID department_name department_id
2 CSE 122
3 ECE 123
4 IT 126

使用全外连接操作符将这两个表连接起来。

SELECT Student.ID, Student.Name, Student.Total_marks, Department. department_name FROM Student FULL OUTER JOIN Department ON Student.ID = department.ID;

输出:

ID Name Total_marks department_name
1 Ram 500 NULL
2 Joseph 476 CSE
3 Rehman 389 ECE
4 Priyanka 450 IT
5 Priyanka 450 NULL
6 Saleem 534 NULL

示例2:

考虑下面的两个表Student和Student Joining。

Roll_no name department
134 Anish CSE
135 Rahul ECE
136 Smitha IT
137 Ganesh Mechanical
138 Arun EEE

表格:学生

Roll_no Admission_no joining_date
134 AS123 23-11-2020
136 AS126 21-08-2021
137 AS127 21-08-2021

表:Student_joining

现在,我们将使用全外连接运算符将这两个表进行连接。

SELECT Student.Roll_no, Student.name, Student_joining.Admission_no, Student_joining.joining_date FROM Student FULL OUTER JOIN Student_joining ON Student.Roll_no = Student_joining.Roll_no;

输出:

Roll_no name Admission_no Joining_date
134 Anish AS123 23-11-2020
135 Rahul NULL NULL
136 Smitha AS126 21-08-2021
137 Ganesh AS127 21-08-2021
138 Arun NULL NULL

示例3:

假设有2个表,一个是product,另一个是product_category。

product_id product_name category_id
1 Laptop 22
2 Shirt 24
3 Jeans 24
4 Mobile 22
5 Book 25

表:product

product_id category
2 Clothing
5 Stationary

表:product_category

让我们使用FULL OUTER JOIN运算符基于product_id将这两个表合并。

SELECT product.product.id, product. product_name, product_category.category FROM product FULL OUTER JOIN product_category ON product. product_id = product_category.product_id;

结果集将是

输出:

product_id product_name category
1 Laptop NULL
2 Shirt Clothing
3 Jeans NULL
4 Mobile NULL
5 Book Stationary

全外连接与WHERE子句

在上面的示例中,我们只使用了ON子句将两个表连接起来,但是可以使用WHERE子句过滤记录表,即可以使用全外连接与WHERE子句根据特定条件连接数据。

全外连接操作符与WHERE子句的语法如下所示:

SELECT column_name
FROM table_name1
FULL OUTER JOIN table_name2
ON table_name1.column_name = table_name2.column_name
WHERE condition;

观察下面的示例以清楚地了解如何使用WHERE子句和FULL OUTER JOIN运算符在特定条件下连接表。

示例4:

考虑以下两个表employee和department,以了解如何基于特定条件连接两个表。

emp_id emp_name salary
45 Ramesh 22000
46 Rahim 20000
47 Sruthi 30000
48 Swetha 35000
50 Priyanka 50000
51 Anjali 40000

表格:employee

emp_id department_name department_id
45 HR 33
47 Development 35
48 marketing 36
51 R&D 39

表:部门

现在,我们打算执行以下命令,根据条件加入上述两个表,条件是员工的薪水应大于25000。

SELECT employee.emp_id, employee.emp_name, employee.salary, department.department_name FROM employee FULL OUTER JOIN department ON employee.emp_id = department.emp_id WHERE employee.salary > 25000;

结果集将会是这样的

输出:

emp_id emp_name salary department_name
47 Sruthi 30000 Development
48 Swetha 35000 marketing
51 Anjali 40000 R&D

所以,这就是关于FULL OUTER JOIN操作的工作原理。本文提供了关于FULL OUTER JOIN运算符的清晰解释,并附有有效且合适的示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程