使用目前所介绍的SQL知识,我们仅能够从一张数据表中检索数据,这在很多情况下是不能满足要求的,因为经常需要从多个表中进行检索才能得到想要的数据,SQL中的“表连接”就是用来解决这个问题的。表连接使用JOIN关键字将一个或者多个表按照彼此间的关系连接为一个结果集。
表连接在SQL中的地位是非常重要的。假设需要查找姓名为MIKE的客户的订单号和票价。如果SQL不支持表连接,那么完成这个功能的第一个任务将是在T_Customer 表中检索姓名为MIKE的客户的FId值:
SELECT FId FROM T_Customer WHERE FName="MIKE"
这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,这样就可以到T_Order中检索FCustomerId等于2 的记录:
SELECT FNumber,FPrice FROM T_Order WHERE FCustomerId=2
执行完毕我们就能在输出结果中看到下面的执行结果:
FNumber FPrice
N002 100.00
由于这个功能比较简单,而且表中的数据也不复杂,所以使用这种分步处理的方式并没有感到有多么慢,但是如果T_Customer表有不止一个用户叫MIKE甚至有更多表参与检索的话使用这种方式不仅非常烦琐,而且会大大降低检索效率。使用SQL中的表连接则可以简化开发,并且由于数据库系统会对表连接进行查询优化,所以使用表连接进行数据的检索也会非常快速。
表连接就像连接两张数据表的连线,线的两端是分别在两张表的特定字段上的。在这里的例子中T_Customer表的FId字段和T_Order表的FCustomerId字段就是关联关系的两个端点。在使用表连接的时候必须显式的指定这个关联关系。
SQL中使用JOIN 关键字来使用表连接。表连接有多种不同的类型,被主流数据库系统支持的有交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTTER JOIN),另外在有的数据库系统中还支持联合连接(UNION JOIN)。