版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
1.多表连接基本查询
使用一张以上的表做查询就是多表查询
语法:SELECT {DISTINCT} *| 列名… FROM 表名 别名,表名1 别名
{WHERE 限制条件 ORDER BY 排序字段 ASC|DESC…}
例:查询员工表和部门表
我们发现产生的记录数是160条,我们还会发现employees表是20条,departments表是8条,160正是employees表和departments表的记录数的乘积,我们称其为笛卡尔集。
如果多张表进行一起查询而且每张表的数据很大的话笛卡尔集就会变得非常大,对性能造成影响,想要去掉笛卡尔集我们需要关联查询。
在两张表中我们发现有一个共同的字段是department_id,department_id就是两张表的关联的字段,我们可以使用这个字段来做限制条件,两张表的关联查询字段一般是其中一张表的主键,另一张表的外键。
- 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。
Oracle 连接
使用连接在多个表中查询数据。
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
下面多表查询可以为每一张表起一个别名并加入WHERE有效的连接条件
关联之后我们发现数据条数是19条,不在是160条。
例:查询出每个员工的上级领导
分析:employees表中的manager_id 字段是当前雇员的上级领导的编号,所以该字段对employees表产生了自身关联,可以使用manager_id字段和employee_id来关联