天天看點

資料庫四種連結方式

titles 表

      sh         ph(出版商編号)

    232342       001

      0432       003

  82478123       005

publishers 表

       ph    mc

       001   紅虎

       002   rmh

       003   hazl

現要把這兩個表的内容合成如下的表結構:

sh(書号)    ph(出版商編号)        mc(出版商名稱)

現在看看采用四種連結方法的結果會有什麼不同。先說說他們的指令:

内聯接:

sele titles.sh,publishers.ph,publishers.mc ;

from titles inner join publishers ;    &&内聯接中的inner是可以省略的

    on titles.ph=publishers.ph

外聯接:

sele titles.sh,publishers.ph,publishers.mc ;

from titles outer join publishers ;

    on titles.ph=publishers.ph

左聯接:

sele titles.sh,publishers.ph,publishers.mc ;

from titles left join publishers ;

    on titles.ph=publishers.ph

右聯接:

sele titles.sh,publishers.ph,publishers.mc ;

from titles right join publishers ;

    on titles.ph=publishers.ph

大家可能看到,除了在join之前的那個關鍵字不同之外,其他地方是一模一樣的,連結條件(即on那一部分)也是一樣的。結果:

titles 表

      sh         ph(出版商編号)

    232342       001

      0432       003

  82478123       005

publishers 表

       ph    mc

       001   紅虎

       002   rmh

       003   hazl

内連結inner://兩個表滿足titles.ph=publishers.ph這個條件的就取出來,即左右兩邊表都要有的記錄才放進結果中。

232342  001  紅虎

  0432  003  hazl

全連結outer://兩個表隻要是有記錄存在的就顯示出來,如果左邊表有的記錄右邊表沒有,就為null,有沒有是以titles.ph=publishers.ph來衡量

//也為外連接配接

  232342  001  001 紅虎

    Null  Null 002 rmh

    0432  003  003 hazl

82478123  005 Null Null

左連結://左邊表有的都顯示出來,而對于右邊表沒有titles.ph=publishers.ph的,就為空

232342  001 001 紅虎

0432  003 003 hazl

82478123 005 Null Null

右連結:

232342  001 001 紅虎

Null  Null 002 rmh

0432  003 003 hazl