我使用Windows 7和oracle 11g,因此当我们要从多个表中获取数据时,可以使用join或正常选择:
select d.department_id,e.employee_id
from employees e,departments d
where d.department_id = e.employee_id;
我的问题是
为什么我们只是使用这种简单的方法从多个表中获取数据?为什么人们使用联接或任何其他方式而忽略这种方式?
对英语不好对不起
答案 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个以上的表连接在一起。您将看到新语法的优点。