为什么我们使用联接从多个表中获取数据?

时间:2019-03-29 05:40:12

标签: sql oracle oracle11g

我使用Windows 7和oracle 11g,因此当我们要从多个表中获取数据时,可以使用join或正常选择:

select d.department_id,e.employee_id
from employees e,departments d
where d.department_id = e.employee_id;

我的问题是

  

为什么我们只是使用这种简单的方法从多个表中获取数据?为什么人们使用联接或任何其他方式而忽略这种方式?

对英语不好对不起

1 个答案:

答案 0 :(得分:1)

您提供的查询是使用SQL-89连接语法编写的。这是一种过时的旧语法,有时很难阅读。

select d.department_id,e.employee_id
from employees e,departments d
where d.department_id = e.employee_id;

如果必须连接两个以上的表怎么办?如果联接条件不是那么简单怎么办?
您的WHERE子句中只会有很多条件,这些条件很难与它们所应用的表相匹配。

您的查询应重写为:

select d.department_id,e.employee_id
from employees e 
   join departments d on d.department_id = e.employee_id;

两个查询都相等,但是后者使用SQL-92连接语法更可取。清晰,明显且易于阅读。

如果仍然有疑问,请尝试编写一个查询,该查询将5个以上的表连接在一起。您将看到新语法的优点。