SQL 外连接2024 年 08 月 29 日 | 阅读 9 分钟
现在,让我们通过示例深入了解 SQL 中不同类型的外连接。示例中的所有查询都将使用 MySQL 数据库编写。 假设我们有以下表格和给定数据 表 1:employee
表 2:department
表 3:Loan
表 4:Borrower
1. 左外连接
SELECT TableName1.columnName1, TableName2.columnName2 FROM TableName1 LEFT OUTER JOIN TableName2 ON TableName1.ColumnName = TableName2.ColumnName; 示例 1 编写一个查询来执行左外连接,将 employee 表作为左表,将 department 表作为右表。 查询 我们使用 SELECT 命令从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。然后,我们使用 LEFT OUTER JOIN 关键字对 employee 和 department 表执行左外连接操作,其中 'e' 和 'd' 是别名。这两个表在两个表中都存在的列 EmployeeID 上连接。 您将得到以下输出
从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、Department_ID、Department_Name。从 employee 表中检索所有记录。只有那些在 employee 表中具有相应 EmployeeID 的记录才从 department 表中检索。department 表中其余不与 employee 表的 EmployeeID 匹配的 EmployeeID 的记录将显示为 NULL。 示例 2 编写一个查询来执行左外连接,将 loan 表作为左表,将 borrower 表作为右表。 查询 我们使用 SELECT 命令从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。然后,我们使用 LEFT OUTER JOIN 关键字对 loan 和 borrower 表执行左外连接操作,其中 'l' 和 'b' 是别名。这两个表在两个表中都存在的列 LoanID 上连接。 您将得到以下输出
从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。从 loan 表中检索所有记录。只有那些在 loan 表中具有相应 LoanID 的记录才从 borrower 表中检索。borrower 表中其余不与 loan 表的 LoanID 匹配的 LoanID 的记录将显示为 NULL。 2. 右外连接
示例 1 编写一个查询来执行右外连接,将 employee 表作为左表,将 department 表作为右表。 查询 我们使用 SELECT 命令从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。然后,我们使用 RIGHT OUTER JOIN 关键字对 employee 和 department 表执行右外连接操作,其中 'e' 和 'd' 是别名。这两个表在两个表中都存在的列 EmployeeID 上连接。 您将得到以下输出
从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。从 department 表中检索所有记录。只有那些在 department 表中具有相应 EmployeeID 的记录才从 employee 表中检索。 示例 2 编写一个查询来执行右外连接,将 loan 表作为左表,将 borrower 表作为右表。 查询 我们使用 SELECT 命令从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。然后,我们使用 RIGHT OUTER JOIN 关键字对 loan 和 borrower 表执行右外连接操作,其中 'l' 和 'b' 是别名。这两个表在两个表中都存在的列 LoanID 上连接。 您将得到以下输出
从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。从 borrower 表中检索所有记录。只有那些在 borrower 表中具有相应 LoanID 的记录才从 loan 表中检索。loan 表中其余不与 borrower 表的 LoanID 匹配的 LoanID 的记录将显示为 NULL。 3. 全外连接
示例 1 编写一个查询来执行全外连接,将 employee 表作为左表,将 department 表作为右表。 查询 我们使用 SELECT 命令从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、DepartmentID、Department_Name。然后,我们使用 LEFT OUTER JOIN 关键字对 employee 和 department 表执行左外连接操作,其中 'e' 和 'd' 是别名。然后我们编写了一个 SELECT 查询来对 employee 和 department 表执行右外连接操作,其中 'e' 和 'd' 是别名。这两个表在两个表中都存在的列 EmployeeID 上连接。两个 SELECT 查询都使用 UNION 运算符组合。 您将得到以下输出
从 employee 和 department 表中检索 EmployeeID、Employee_Name、Employee_Salary、Department_ID、Department_Name。由于左外连接,从 employee 表中检索所有记录。只有那些在 employee 表中具有相应 EmployeeID 的记录才从 department 表中检索。department 表中其余不与 employee 表的 EmployeeID 匹配的 EmployeeID 的记录将显示为 NULL。由于右外连接,从 department 表中检索所有记录。只有那些在 department 表中具有相应 EmployeeID 的记录才从 employee 表中检索。 示例 2 编写一个查询来执行全外连接,将 loan 表作为左表,将 borrower 表作为右表。 查询 我们使用 SELECT 命令从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。然后,我们使用 LEFT OUTER JOIN 关键字对 loan 和 borrower 表执行左外连接操作,其中 'l' 和 'b' 是别名。然后我们编写了一个 SELECT 查询来对 loan 和 borrower 表执行右外连接操作,其中 'l' 和 'b' 是别名。这两个表在两个表中都存在的列 LoanID 上连接。两个 SELECT 查询都使用 UNION 运算符组合。 您将得到以下输出
从 loan 和 borrower 表中检索 LoanID、Branch、Amount、CustID、CustName。由于左外连接,从 loan 表中检索所有记录。只有那些在 loan 表中具有相应 LoanID 的记录才从 borrower 表中检索。borrower 表中其余不与 loan 表的 LoanID 匹配的 LoanID 的记录将显示为 NULL。由于右外连接,从 borrower 表中检索所有记录。只有那些在 borrower 表中具有相应 LoanID 的记录才从 loan 表中检索。loan 表中其余不与 borrower 表的 LoanID 匹配的 LoanID 的记录将显示为 NULL。 下一主题SQL 左连接 |
我们请求您订阅我们的新闻通讯以获取最新更新。