Mysql入门系列:检索MYSQL记录
2006-12-31 10:46:29 来源:WEB开发网核心提示: 在有了一定的经验后,可将这些经验用于新问题,Mysql入门系列:检索MYSQL记录(2),您会发现自己思考问题类似于,“噢,即使各表很小,所得到的行数也会很大,是的,它就是一个LEFT JOIN 问题
在有了一定的经验后,可将这些经验用于新问题,您会发现自己思考问题类似于,“噢,是的,它就是一个LEFT JOIN 问题。”或者,“啊哈,这就是一个受各对索引列制约的三路线连接。”(指出这一点,实际上我也感到有点不愿意。听到经验有帮助,您可能受到一定的鼓舞。另外,考虑到您最终能那样思考问题也会令自己有点惊讶。)下几节中介绍怎样利用MySQL支持的连接操作的格式,多数例子使用了下面的两个表。它们很小,很简单,足以很清楚地看出每种连接的效果。
3.6.1平凡连接
最简单的连接是平凡连接( trivial join),这种连接中只指定一个表。在此情况下,行从指定的表中选择。如:
有的作者根本就不考虑这种SELECT 连接的形式,仅对从两个或多个表中检索记录的SELECT 语句使用“连接”这个术语。本人认为那只是看法不同而已。
3.6.2 全连接
如果指定多个表,将各个表名用逗号分隔,就指定了全连接。例如,如果连接两个表,来自第一个表中的每行与第二个表中每行进行组合:
全连接也称为叉连接,因为每个表的每行都与其他表中的每行交叉以产生所有可能的组合。这也就是所谓的笛卡儿积。这样连接表潜在地产生数量非常大的行,因为可能得到的行数为每个表中行数之积。三个分别含有10 0、2 0 0、3 0 0行的表的全连接将产生10 0×2 0 0×3 0 0= 6百万行。即使各表很小,所得到的行数也会很大。在这样的情形下,通常要使用WHERE
更多精彩
赞助商链接