學(xué)習(xí)啦>學(xué)習(xí)英語(yǔ)>專業(yè)英語(yǔ)>計(jì)算機(jī)英語(yǔ)>

數(shù)據(jù)庫(kù)join的用法

時(shí)間: 長(zhǎng)思709 分享

  數(shù)據(jù)庫(kù)join的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下數(shù)據(jù)庫(kù)join的用法的用法,希望對(duì)你們有用。

  數(shù)據(jù)庫(kù)join的用法的用法如下:

  SELECT a.symbol , a.sname , b.tdate , b.tclose

  FROM a , b

  WHERE a.symbol = b.symbol

  上面的代碼用WHERE關(guān)鍵詞指明了兩個(gè)表之間的聯(lián)合關(guān)系。

  如果改寫為JOIN關(guān)鍵字,那么代碼如下:

  SELECT a.symbol , a.sname , b.tdate , b.tclose

  FROM securitycode a

  JOIN dayquote b

  ON a.symbol = b.symbol

  現(xiàn)在對(duì)JOIN的用法應(yīng)該有個(gè)大概了解了,JOIN的具體用法和語(yǔ)法介紹如下:

  先假設(shè)有表a、b如下:

  表a 表b

  ---------------------- --------------------------------

  | symbol | sname | | symbol | tdate | tclose |

  -------------------------- -------------------------------------

  | A | B | | A | C | D |

  | G | H | | X | E | F |

  -------------------------- ------------------------------------

  內(nèi)聯(lián)接:

  SELECT a.symbol , a.sname , b.tdate , b.tclose

  FROM a

  INNER JOIN b

  ON a.symbol = b.symbol

  其中INNER關(guān)鍵字可以省略。

  此語(yǔ)句只有在表a和b中都有匹配行時(shí),才返回。

  所以本例中返回結(jié)果為:

  symbol sname tdate tclose

  A B C D --這一行即滿足a.symbol = b.symbol

  外聯(lián)接:

  SELECT a.symbol , a.sname , b.tdate , b.tclose

  FROM a

  RIGHT | LEFT | FULL OUTER JOIN b

  ON a.symbol = b.symbol

  其中OUTER關(guān)鍵詞可以省略。

  RIGHT JOIN:當(dāng)右表格(即表b)中的行在左表中沒有匹配行時(shí),也返回。返回的記錄中,選擇的左表的列的內(nèi)容為NULL。

  所以本例中返回結(jié)果為:

  symbol sname tdate tclose

  A B C D --這一行即滿足a.symbol = b.symbol

  null null E F --這一行里,對(duì)應(yīng)的b.symbol沒有在表a中找到相同的a.symbol

  LEFT JOIN:當(dāng)左表格(即表a)中的行在右表中沒有匹配行時(shí),也返回。返回的記錄中,選擇的右表的列的內(nèi)容為NULL。

  所以本例中返回結(jié)果為:

  symbol sname tdate tclose

  A B C D --這一行即滿足a.symbol = b.symbol

  G H null null --這一行里,對(duì)應(yīng)的a.symbol沒有在表b中找到相同的b.symbol

  FULL JOIN:可以把它理解為L(zhǎng)FET和RIGHT的集合,某表中某一行在另一表中無(wú)匹配行,則相應(yīng)列的內(nèi)容為NULL。

  所以本例中返回結(jié)果為:

  symbol sname tdate tclose

  A B C D --這一行即滿足a.symbol = b.symbol

  G H null null --這一行里,對(duì)應(yīng)的a.symbol沒有在表b中找到相同的b.symbol

  null null E F --這一行里,對(duì)應(yīng)的b.symbol沒有在表a中找到相同的a.symbol

  A B C D --這一行即滿足a.symbol = b.symbol

  交叉聯(lián)接:

  SELECT a.*,b.*

  FROM a

  CROSS JOIN b

  交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯(lián)接也稱作笛卡爾積。

  也就是相當(dāng)于兩個(gè)表中的所有行進(jìn)行排列組合。

  若表a有X行,表b有Y行,則將返回XY行記錄。

  所以本例中返回結(jié)果為:

  symbol sname tdate tclose

  A B C D

  G H C D

  A B E F

  G H E F

543087