当前位置:首页 > 学习英语 > 专业英语 > 计算机英语>正文

数据库join的用法

【计算机英语】 2016-03-20本文已影响

  数据库join的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库join的用法的用法,希望对你们有用。

  数据库join的用法的用法如下:

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

  FROM a , b

  WHERE a.symbol = b.symbol

  上面的代码用WHERE关键词指明了两个表之间的联合关系。

  如果改写为JOIN关键字,那么代码如下:

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

  FROM securitycode a

  JOIN dayquote b

  ON a.symbol = b.symbol

  现在对JOIN的用法应该有个大概了解了,JOIN的具体用法和语法介绍如下:

  先假设有表a、b如下:

  表a ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表b

  ---------------------- ? ? ? ? ? ? ? ? ? ? --------------------------------

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

  -------------------------- ? ? ? ? ? ? ? ? -------------------------------------

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

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

  -------------------------- ? ? ? ? ? ? ? ? ------------------------------------

  内联接:

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

  FROM a

  INNER JOIN b

  ON a.symbol = b.symbol

  其中INNER关键字可以省略。

  此语句只有在表a和b中都有匹配行时,才返回。

  所以本例中返回结果为:

  symbol ? sname ? tdate ? tclose

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? ?D ? ? ? ?--这一行即满足a.symbol = b.symbol

  外联接:

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

  FROM a

  RIGHT | LEFT | FULL OUTER JOIN b

  ON a.symbol = b.symbol

  其中OUTER关键词可以省略。

  RIGHT JOIN:当右表格(即表b)中的行在左表中没有匹配行时,也返回。返回的记录中,选择的左表的列的内容为NULL。

  所以本例中返回结果为:

  symbol ? sname ? tdate ? tclose

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? ?D ? ? ? ?--这一行即满足a.symbol = b.symbol

  null ? ? ? null ? ? ? ? E ? ? ? ?F ? ? ? ?--这一行里,对应的b.symbol没有在表a中找到相同的a.symbol

  LEFT JOIN:当左表格(即表a)中的行在右表中没有匹配行时,也返回。返回的记录中,选择的右表的列的内容为NULL。

  所以本例中返回结果为:

  symbol ? sname ? tdate ? tclose

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? D ? ? ? ?--这一行即满足a.symbol = b.symbol

  G ? ? ? ? ?H ? ? ? ? null ? ?null ? ? ? --这一行里,对应的a.symbol没有在表b中找到相同的b.symbol

  FULL JOIN:可以把它理解为LFET和RIGHT的集合,某表中某一行在另一表中无匹配行,则相应列的内容为NULL。

  所以本例中返回结果为:

  symbol ? sname ? tdate ? tclose

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? D ? ? ? ?--这一行即满足a.symbol = b.symbol

  G ? ? ? ? ?H ? ? ? ? null ? ?null ? ? ? --这一行里,对应的a.symbol没有在表b中找到相同的b.symbol

  null ? ? ? null ? ? ? ? E ? ? ? ?F ? ? ? --这一行里,对应的b.symbol没有在表a中找到相同的a.symbol

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? ?D ? ? ? ?--这一行即满足a.symbol = b.symbol

  交叉联接:

  SELECT a.*,b.*

  FROM a

  CROSS JOIN b

  交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

  也就是相当于两个表中的所有行进行排列组合。

  若表a有X行,表b有Y行,则将返回XY行记录。

  所以本例中返回结果为:

  symbol ? sname ? tdate ? tclose

  A ? ? ? ? ?B ? ? ? ? ?C ? ? ? D

  G ? ? ? ? ?H ? ? ? ? ?C ? ? ? D

  A ? ? ? ? ?B ? ? ? ? ?E ? ? ? F

  G ? ? ? ? ?H ? ? ? ? ?E ? ? ? F

网友评论

Copyright © 2019 All Rights Reserved

错不了学习网 版权所有

回到顶部