详解多表链接查询

  一、概念的理解:

检索对象为多个表(或视图)时,出现在from后面的不再是一个表(或视图),而是多个表(或视图)的检索对象序列,这样的查询即为多表链接查询。

  二、多表查询的处理过程:

先通过计算多个表的笛卡儿积,然后再按join子句的连接条件和where子句的检索条件从中取出满足查询要求(条件)的行。

注:多表链接查询时,若多个表中具有相同的列名,则在引用列名时必须加表名前缀或别名前缀。

  三、join子句类型:

交叉连接:

即求两个表的笛卡儿积。

例:select * from table1 cross join table2

内连接:

需要明确列出连接条件。连接条件可以是任何关系表达式或逻辑表达式。

例:select * from table1 ,table2 where table1.id=table2.id

select * from table1 join table2 on table1.id=table2.id

注:内连接只输出满足条件的结果行。

左连接:

规定所有的输出记录都依据连接的左表生成,返回记录为满足连接条件的记录。

例:select * from table1 left join table2 on table1.id=table2.id

注:若右表没有对应的满足连接条件的记录,则只返回相应的左表记录,对应的右表列取空值(null)。

右连接:

右连接与左连接刚好相反,它依据右表生成结果行。

例:select * from table1 right join table2 on table1.id=table2.id

注:若左表没有对应的满足连接条件的记录,则只返回相应的右表记录,对应的左表列取空值(null)。

以上写得不足的地方,请给予指出,欢迎各位拍砖。。。

 

posted @ 2012-01-21 20:37  weiyingqin  阅读(411)  评论(0编辑  收藏  举报