第十章-外联接,自联接与联合

1.内联接,包括相等联接和自然联接。     
  内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

2.外联接

  说明:内联接与外联接的区别在于,外联接一定会提供数据行,无论该行能否在另一个表中找到相匹配的行。

  a)左外联接(left join 或 left out join)

  左外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

1 SELECT g.girl, t.toy 
2 FROM girls g 
3 LEFT OUTER JOIN toys t 
4 ON g.toy_id = t.toy_id;

  b)右外联接(right join 或 right out join)

  右外联接同左外联接

  c)自联接(right join 或 right out join)

  自联接能把单一表当成具有完全相同的信息的表来进行进行查询。

1 SELECT c1.name, c2.name AS boss 
2 FROM clown_info c1 
3 INNER JOIN clown_info c2 
4 ON c1.boss_id = c2.id;

3.联合(UNION)

  union根据在select中指定的列,把两张或更多张的查询结果合并至一个表中。也可将查询结果用于创建表。 
  union默认是没有重复的结果,若需要输出重复的,可以使用union all运算符。 
  union使用限制:只能接受一个order by语句,且必须位于语句末端。位于最后一句的order by可以控制整个数据集的输出。

1 SELECT title FROM job_current
2 UNION
3 SELECT title FROM job_desired
4 UNION
5 SELECT title FROM job_listings
6 ORDER BY title;

  从联合创建表:create table as 接受来自select查询的结果并把结果制成一张表,如下

1 CREATE TABLE my_union AS
2 SELECT title FROM job_current UNION
3 SELECT title FROM job_desired
4 UNION SELECT title FROM job_listings;

4.INTERSECT(交集)与EXCEPT(差集)

  类似数学中的交集,差集概念,使用方法类似UNION

原文地址:https://www.cnblogs.com/hell0x/p/5057346.html