联接用于将两个相关的表组合在一起。
在您的示例中,您可以组合Employee表和Department表,如下所示:
SELECt FNAME, LNAME, DNAMEFROMEMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
这将导致一个记录集,如:
FNAME LNAME DNAME----- ----- -----John Smith ResearchJohn Doe Administration
我用
INNER JOIN上面的。
INNER JOINs将两个表组合在一起,以便 仅 显示两个表中具有匹配项的记录,并且在这种情况下,将它们
连接 到部门编号(Employee中的字段DNO,Department表中的DNUMBER)。
LEFT JOIN使用s可以在第一个表中有记录但第二个表中 没有 记录时合并两个表。例如,假设您要列出所有雇员以及所有受抚养者的列表:
SELECt EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_lastFROMEMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
这里的问题是,如果员工 没有 受抚养人,那么他们的记录将根本不会显示-因为DEPENDENT表中没有匹配的记录。
因此,使用 左 连接将所有数据保留在“左”(即第一个表)上,并将所有匹配的数据保留在“右”(第二个表)上:
SELECt EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_lastFROMEMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
现在,我们获得了 所有 员工记录。如果给定员工没有匹配的受抚养人,则
dependent_first和
dependent_last字段将为空。



