联接基础知识---SQL中

在对于关系型数据库中,联接是将多个表联系的方法。联接分为很多种,如:内联接、外联接、交叉联接,自然联接

一、内联接
 
  1。1使用等值内联接
 即两者是通过两列的值是相等的联接,称为相等联接
  1.2使用等号以外的运算符的联接(<,>..)
  1.3使用不等号运算符的联接(<>)
  在SQL中表述为INNER JOIN ON  (condition..)
二、外联接
   外联接可以分为三种:左向外联接、右向外联接、完整外联接
   2.1左向外联接:
 其会将左边的所有通过where、Have检索出来的行添加进去,而对于联接的表只有满足了条件才会。
 在SQL中表述为LEFT OUTER JOIN
   2.2右向外联接
        就是右边拉,这不用我说了
 在SQL中表述为RIGHT OUTER JOIN
   2.3完整外联接
        就是对于左右两表所有的行都要
 在SQL中表述为FULL OUTER JOIN
三、交叉联接
 就是表的笛卡尔积,第一个表的行数乘以第二个表的行数,即结果集的大小。
 在SQL 中表述为CROSS JOIN
四、自联接
五、在FROM 或WHERE子句中指定联接
 在FROM或WHERE中指定联接往往会使结果不同。看下例。(注意:在WHERE中指定左联接使用*=,右联接使用=*)
 USE pubs
SELECT t.title_id, t.title, s.qty
FROM titles AS t, sales AS s
WHERE t.title_id *= s.title_id
   AND s.stor_id = '7066'
   --------------------------------------------
 USE pubs
SELECT t.title_id, t.title, s.qty
FROM titles AS t LEFT OUTER JOIN sales AS s
   ON t.title_id = s.title_id
   AND s.stor_id = '7066'
这两个结果集是一样的
但是将联接和搜索条件放在不同的位置结果就完全不同了
SELECT t.title_id, t.title, s.qty
FROM titles AS t INNER JOIN sales AS s ON
t.title_id = s.title_id
WHERE    s.stor_id = '7066'

posted @ 2007-01-20 21:30  枫崖  阅读(272)  评论(0编辑  收藏  举报