例如: INNER JOIN,OUTER JOIN,LEFT INNER JION,LEFT OUTER JION,
请各位举个数据表的例子吧。

解决方案 »

  1.   

    建议你去google下,这样自己印象更深刻!
    什么是左连接,右连接,外连接,内连接。其实很简单,你首先要把概念搞清楚。你只需要理解用什么连接的时候,两个表里面的数据是怎么被查询出来的,你已比较就非常清楚了
      

  2.   

    在数据库应用中,经常要涉及从两个或更多的表中查询数据,这就需要使用连接查询。
    其格式如下:
    SELECT COLUMN_NAME,C O L U M N _ N A M E [ , . . . n ]
    FROM TA B L E _ N A M E,TA B L E _ N A M E [ , . . . n ]
    WHERE TABLE_NAME.COLUMN_NAME JOIN_OPERATOR TA B L E _ N A M E . C O L U M N _ N A M E
    上述的连接操作符(J O I N _ O P E R ATO R)可以是:=、>、<、> =、< =、! =、< >、! >、! <、
    = *、* =。
    在A N S I中,“=”连接应该写成Inner Join;“* =”连接应该写成LEFT OUT JOIN;
    “= *”连接应该写成“ RIGHT OUT JOIN”。
    在SQL SERVER中,这些写法都可以用。但是,
    A N S I规定的写法是INNER JOIN等标志。一般而言,在任何连接中,都使用“主键=外键”的连接查询条件。
    ---------------------------------------------------------------------------------非限制连接(CROSS JOIN),就是指不带W H E R E子句的查询。在数学上,就是表的笛卡
    尔积。若R表和S表非限制连接,而且R表有X行,S表有Y行,那么结果集是X * Y行。即:R表
    的一行对应着S表的所有行。在应用中,非限制连接产生的是无意义结果集,但在数据库的数
    学模式上有重要的作用。
    -------------------------------------------------------------------------
    自然连接(INNER JOIN)也叫内连接。我们先看下面的例子:SELECT PUB_NAME,TITLE
    FROM TITLES,PUBLISHERS
    WHERE TITLES.PUB_ID=PUBLISHERS.PUB_ID
    或写成:
    SELECT PUB_NAME,TITLE
    FROM TITLES INNER JOIN PUBLISHERS
    ON TITLES.PUB_ID=PUBLISHERS.PUB_ID
    其中,INNER JOIN是SQL Server的缺省连接,可简写为J O I N。在J O I N后面指定哪些表
    作连接。O N后面指定了连接的条件。
    以上操作的过程如下:
    1) 从T I T L E S表中取出一条符合其条件的记录。
    2) 扫描P U B L I S H E R S表,分别检查每条记录是否在连接属性上同表T I T L E S取出的记录相
    3) 相等就显示信息。继续从表T I T L E S中取下一条记录,重复步骤2。
    其实,两个或多个表要做连接,那么这些表之间必然存在着主键和外键的关系。所以,
    只需要将这些键的关系列出,就可以得出表连接的结果。如上例中, P U B _ I D是P U B L I S H E R S
    表的主键, P U B_ I D又是TI T L E S表的外键,参照P U B L I S H E R S表中的P U B _ I D .所以,这两个表
    的连接条件就是T I T L E S.PUB_ID=PUBLISHERS. PUB_ID。
    -----------------------------------------------------------------------
    外连接(OUTER JOIN)允许限制一张表中的行,而不限制另一张表中的行。
    下面举两个例子来说明外连接的用法。请比较这两个例子。
    例显示所有的书名(无销售记录的书也包括在内,“*”在左边表示不限制左边表的数
    SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY
    FROM TITLES,SALES
    WHERE TITLES.TITLE_ID *= SALES.TITLE_ID
    或写为:
    SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY
    FROM TITLES LEFT OUTER JOIN SALES
    ON TITLES.TITLE_ID = SALES.TITLE_ID外连接的方法有两种:
    &#8226; A *= B 包括第一张表A的所有行在内,而不考虑语句限制(如: A . t i t l e _ i d = B . t i t l e _ i d)。
    相当于LEFT OUT JOIN。
    &#8226; A =* B 包括第二张表B的所有行在内,而不考虑语句限制(如: A . t i t l e _ i d = B . t i t l e _ i d)。
    相当于RIGHT OUT JOIN。
    创建外连接规则:
    1) 外连接显示外部表中的所有行,包括与相关表不相配的行在内。
    2) 外连接只能在两张表之间进行。
    3) 不能在内部表上使用IS NULL检索条件。
      

  3.   

    你首先要把概念搞清楚,《SQL Server 2000 编程员指南》这本书不错
      

  4.   

    http://community.csdn.net/Expert/topic/4740/4740565.xml?temp=.5665094
    //其实联机帮助写的最清楚