SQL“正在使用”查询

我敢打赌,如果您曾经使用过关系数据库,那么您可能遇到过术语SQL join。即使您没有特别使用过join,您也可能听说过这个概念。

join功能非常强大,在关系数据库中非常常见,因为关系数据库是SQL数据库的主要基础。

使用SQL join可以很好地工作的常见且有用的子句之一是USING关键字。我们将该关键字与JOIN语句结合使用,以指定用于连接两个或多个表的列。

您可以将其视为一种提供更简洁和可读的执行连接方式的特性,而不是使用典型的ON子句,特别是当我们处理来自两个表的命名相似的列时。

有了这些,请加入我们的这篇文章,我们将探讨在SQL连接上下文中使用USING子句是什么、如何使用以及为什么使用。

要求:

在深入讨论技术细节和实际实现之前,我们需要讨论一下需求。

对于这种情况,我们只需要一个能够提供良好的数据集和结构来执行连接的数据库。对于我们的示例,我们选择Sakila示例数据库。

SQL USING子句

正如我们所提到的,SQL中的USING子句是一个特性,当我们有两个表中具有相似名称的列时,它为我们提供了一种更具可读性和简洁的方式来连接表。

使用Using子句,而不是使用ON子句指定连接条件并显式地设置表和列名,我们可以指示相关表中的哪些列是join的一部分。

语法:

下面的代码片段演示了SQL中USING子句的语法:

SELECT column1, column2,…

从表1

加入表

使用(column_name);

在给定的语法中,我们从SELECT语句开始,该语句允许我们指定希望从结果JOIN检索的列。

接下来,指定要连接的第一个表,然后指定要连接的第二个表。

最后,我们使用USING子句指定希望用于JOIN的两个表中具有相同名称的列。

例1:使用Using子句的内连接

为了更好地理解这个子句是如何工作的,让我们看一个使用它的INNER join示例。

让我们以Sakila示例数据库为例。假设我们希望检索客户列表及其相应的租赁详细信息。

我们可以利用基于“customer_id”列的INNER JOIN,该列应该同时存在于客户表和租赁表中。

查询示例如下:

选择

customer.customer_id,

first_name、

last_name、

rental_date



客户

加入租赁

使用(customer_id);

在给定的查询中,我们从表中选择“customer_id”、“first_name”、“last_name”和“rental_date”列。

然后,我们使用using (customer_id)子句指定JOIN条件,以表明我们希望使用两个表中常见的“customer_id”。

但是如果没有USING子句,前面的查询会是什么样子呢?请看下面的例子:

选择

customer.customer_id,

first_name、

last_name、

rental_date



客户

加入租赁

在客户。Customer_id = rent . Customer_id;

您将注意到,在这种情况下,我们需要显式地指定JOIN条件。

示例2:使用“Using”子句的自连接

是的,我们甚至可以在自连接中使用它。举个例子,我们需要找到所有的员工和各自的经理。

我们可以在“employees”表上使用基于“manager_id”列的自连接作为JOIN条件。

选择

e.employee_id,

e.first_name作为employee_first_name,

e.last_name作为employee_last_name,

m.first_name AS manager_first_name

m.last_name作为manager_last_name



员工e

左加入员工m

使用(manager_id);

在本例中,我们通过为“employees”表设置两个别名来执行自连接。一个是“e”代表员工,“m”代表经理。

然后,我们使用USING(管理器)根据该列将员工与相应的管理器连接起来。

结论

在本教程中,我们学习了SQL中的USING子句,它允许我们简化并使SQL连接更具可读性和简练性。