上一页

联接表

可以使用一个 SELECT 语句从数据库的多个表中检索数据。该语句联接表,并返回一个包含每个表中所选数据的记录集。

例如,公司数据库可能包含两个表,一个表是有关雇员的个人数据,另一个表是有关公司部门的数据。如果要生成一个显示雇员姓名、电话号码和部门的雇员名录,则必须同时从两个表中检索信息。

为此,请创建一个联接,指定要包含的所有表以及表彼此之间如何关联。示例如下:

SELECT FIRSTNAME, LASTNAME, PHONE, DEPTNAME
FROM EMPLOYEES, DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID = DEPARTMENTS.DEPT_ID

备注: 使用点标记可以更精确地标识列。例如,EMPLOYEES.DEPT_ID 指 EMPLOYEES 表中的 DEPT_ID 列。

第一行指定要检索的列。前三列 FIRSTNAME、LASTNAME、PHONE 存在于 EMPLOYEES 表中,而第四列 DEPTNAME 只存在于 DEPARTMENTS 表中。

第二行指定要从中检索数据的两个表:EMPLOYEES 和 DEPARTMENTS。

最后一行指定要在两个表中进行联接和检索的记录。每个表中都有一个名为 DEPT_ID 的列。(在 DEPARTMENTS 表中,该列为主键。有关更多信息,请参见定义表之间的关系。)WHERE 子句将一个表中 DEPT_ID 的值与另一个表中 DEPT_ID 的值进行比较。如果找到匹配项,则将 EMPLOYEES 表中该记录的所有域与 DEPARTMENTS 表中该记录的所有域相联接。然后,对合并数据进行筛选,以创建由 FIRSTNAME、LASTNAME、PHONE 和 DEPTNAME 列组成的新记录。最后,将新记录添加到记录集中。

在一些数据库系统中使用稍有不同的联接语法可能会更好。例如,下列 SQL 语句使用 SQL 关键字 INNER JOIN...ON 来获得与上例相同的结果:

SELECT FIRSTNAME, LASTNAME, PHONE, DEPTNAME
FROM EMPLOYEES INNER JOIN DEPARTMENTS
ON EMPLOYEES.DEPT_ID = DEPARTMENTS.DEPT_ID

请查阅数据库系统的文档来确定应使用的联接语法。

相关主题

定义表之间的关系


  上一页