多表连接
连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据。
- 在 WHERE子句中书写连接条件。
- 如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀。
- N个表相连时,至少需要N-1个连接条件。
连接类型
按连接条件分:
- 等值连接
- 非等值连接
按其他连接方法分
- 外部连接
- 内部连接
笛卡尔积
笛卡尔积,是第一个表中的所有行和第二个表中的所有行都发生连接。
笛卡尔积在下列情况产生
- 连接条件被省略
- 连接条件是无效的
限制歧义列名
- 在用到多个表时可以使用表名作前缀来限定列;
- 通过使用表前缀可以提高性能;
- 通过使用列的别名可以区分来自不同表但是名字相同的列;
自身连接
自身连接,也叫自连接,是一个表通过某种条件和本身进行连接的一种方式,就如同多个表连接一样。
SELECT worker.ename ‘WNAME’,manager.ename ‘LNAME’
FROM emp worker, emp manager
WHERE worker.mgr = manager.empno;
交叉连接
交叉连接会产生连个表的交叉乘积,和两个表之间的笛卡尔积是一样的;
使用CROSS JOIN 子句完成。
自然连接
自然连接是对两