oracle sql中join关键字和inner join关键字有什么区别?

2021-12-17 00:00:00 join sql oracle inner-join

我找不到关于关键字 join 的文档,但我在网上看到了使用它的示例.

I can't find documentations on the key word join but I saw examples on the web using it.

我在 Oracle hr 模式中做了一些实验,我有表 departments:

I was doing some experiment with it in Oracle hr schema, where I have table departments:

  • deparment_name
  • manager_id
  • location_id

employees:

  • first_name
  • employee_id

和表locations:

  • location_id
  • city

查询应返回部门名称,部门经理的名字,部门所在城市.

Query should return the department_name, first_name of the manager of the department, and the city where the department is located.

与使用关键字inner join

带有join的代码:

select d.department_name, e.first_name,l.city
from departments d
   join employees e on d.manager_id=e.employee_id
   join locations l on d.location_id=l.location_id

带有内连接的代码:

select d.department_name, e.first_name,l.city
from departments d
   inner join employees e on d.manager_id=e.employee_id
   inner join locations l on d.location_id=l.location_id

这两种情况是否有区别,或者我只是偶然发现它们返回相同结果的情况?

Is there a difference between the two condition, or am I just happen to stumble on a situation where they return the same results?

推荐答案

  • 遵循 1992 ANSI SQL 参考,INNER 是可选的:
  • 查询表达式 179 7.5 - 连接表

    Query expressions 179 7.5 - joined table

    3) 如果指定了合格的联接而联接类型未指定指定,则 INNER 是隐式的.

    3) If a qualified join is specified and a join type is not specified, then INNER is implicit.

    • 遵循 Oracle 标准(9i 以后),INNER 前缀也是可选的.在 9i 之前,Oracle 不遵循 ANSI 规则,甚至不支持 JOIN 语法.
      • Following Oracle Standards (9i onward), the INNER prefix is also optional. Before 9i, Oracle didn't follow ANSI rules, and didn't even support JOIN syntax.

相关文章