连接
交叉连接与笛卡尔积是什么关系?
- 写法:
FROM A CROSS JOIN B; - 语义: 与 FROM 中并列两张表相同, 结果就是笛卡尔积;
- 差别: 只是把"两表并列"的意图写得更明确;
SELECT name
FROM Movies CROSS JOIN StarsIn;
连接怎样写?
- 写法:
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 §连接)