跳到主要内容

连接

交叉连接与笛卡尔积是什么关系?​

  • 写法: FROM A CROSS JOIN B;
  • 语义: 与 FROM 中并列两张表相同, 结果就是笛卡尔积;
  • 差别: 只是把"两表并列"的意图写得更明确;
SELECT name
FROM Movies CROSS JOIN StarsIn;

θ\theta 连接怎样写?​

  • 写法: FROM A JOIN B ON 条件;
  • 语义: JOIN 先做笛卡尔积, 再由 ON 筛选满足条件的元组;
SELECT title, length
FROM Movies JOIN StarsIn ON title = movieTitle AND year = movieYear;

自然连接怎样写?​

  • 写法: FROM A NATURAL JOIN B;
  • 语义: 自动在所有同名属性上做等值连接, 结果不重复保留这些属性;
SELECT name
FROM Movies NATURAL JOIN StarsIn;

外连接怎样写?​

  • 写法: FULL、RIGHT、LEFT 与 OUTER JOIN 组合;
  • 语义: 在连接结果上保留悬浮元组, 缺失的一侧用 NULL 填充;
SELECT name
FROM Movies FULL OUTER JOIN StarsIn;

(source: 050-sql.md §连接)