📜  SQL |使用条款

📅  最后修改于: 2022-05-13 01:55:42.580000             🧑  作者: Mango

SQL |使用条款

如果多个列具有相同的名称但数据类型不匹配,则可以使用 USING子句修改 NATURAL JOIN 子句以指定应用于 EQUIJOIN 的列。

  • 当多列匹配时,使用 USING 子句仅匹配一列。
  • NATURAL JOIN 和 USING 子句是互斥的。
  • 它在引用的列中不应有限定符(表名或别名)。
  • NATURAL JOIN 使用具有匹配名称和数据类型的所有列来连接表。 USING 子句可用于仅指定应用于 EQUIJOIN 的那些列。

例子:


我们将在以下基表上应用以下提到的命令:

    员工表

    部门表

    QUERY 1:编写 SQL 查询来查找员工的工作位置。还要给出他们各自的employee_id 和last_name?

    输入: SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.LOCATION_ID FROM Employees e JOIN Departments d USING(DEPARTMENT_ID);输出 :

说明:显示的示例连接了 EMPLOYEES 和 DEPARTMENTS 中的 DEPARTMENT_ID 列
表格,从而显示员工工作的位置。

我们将在以下基表上应用以下提到的命令:

    国家表

    位置表

    QUERY 2:编写 SQL 查询来查找 location_id、street_address、postal_code 和它们各自的国家名称?

    输入: SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id);输出 :

说明:显示的示例连接了 LOCATIONS 和 COUNTRIES 中的 COUNTRY_ID 列
表,从而显示所需的详细信息。

注意:当我们在连接语句中使用 USING 子句时,连接列不符合表别名。即使在 SQL 语句的其他地方使用了相同的列,也不要给它起别名:

例子:

    输入:SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id) WHERE c.country_id'IT';输出:

解释:由于在 WHERE 子句中再次使用了 USING 子句中的列,因此它向用户抛出了错误。