你真的会玩SQL吗?内连接、外连接

发表于:2015-10-30 09:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:欢醉    来源:51Testing软件测试网采编

#
SQL
分享:
  大多数人一般写多表查询会这样写select * from tbA ,tbB  没有用到JOIN关键字,太Low了,官网标准建议是用JOIN明确表间的关系,下面具体来讲。
  连接类型:
  交叉联接 得到所连接表的所有组合 (笛卡儿集)cross join
  内联接得到连接表的满足条件的记录组合inner join  on
  外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行 full | left | right  outer join  on
  交叉联接
  在这类联接的结果集内,两个表中每两个可能成对的行占一行。
  但是如果在交叉联接中加入where 子句就相当与是内联接
  例:
  SELECT title, pub_name
  FROM titles Cross JOIN publishers
  Where titles.pub_id = publishers.pub_id
  这就相当于我们一最开始的写法:SELECT title, pub_name  FROM titles , publishers Where titles.pub_id = publishers.pub_id
  执行过程:
  内联接
  仅显示两个联接表中的匹配行的联接。(这是查询设计器中的默认联接类型。)
  例:
  SELECT title, pub_name
  FROM titles INNER JOIN publishers
  ON titles.pub_id = publishers.pub_id
  执行过程:
  左向外联接
  包括第一个命名表(”左”表,出现在 JOIN 子句的最左边)中的所有行。不包括右表中的不匹配行。
  例:
  SELECT titles.title_id,titles.title,publishers.pub_name
  FROM titles LEFT OUTER JOIN publishers
  ON titles.pub_id = publishers.pub_id
  右向外联接
  包括第二个命名表(”右”表,出现在 JOIN 子句的最右边)中的所有行。不包括左表中的不匹配行。
  例:
  SELECT titles.title_id, titles.title,publishers.pub_name
  FROM titles RIGHT OUTER JOIN publishers
  ON titles.pub_id = publishers.pub_id
  执行过程:
21/212>
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号