Oracle表连接查询方法——JOIN操作详解
1、 多表连接查询
2、 连接方式主要有几种
3、 两者均支持在末尾添加where条件进行筛选。
4、 除交叉连接外,其余连接均需使用on关键字指定条件。
5、 自然连接是通过两张表中列名和数据类型相同的字段自动进行关联,返回所有匹配的记录结果,无需人工指定连接条件,但不支持额外添加筛选限制。
6、 因添加限定条件,下图操作将导致报错
7、 下图展示了两张表之间的关联关系,由于存在两个字段的数据类型和列名均相同,在执行自然连接查询时,系统会同时满足这两个字段的匹配条件。最终返回了32条记录,然而雇员表实际包含107条数据,表明该查询结果未能涵盖全部雇员信息,存在遗漏,因此结果不够准确。
8、 可利用using子句为两表设定连接条件,此时无需使用natural join,仅需写为join即可。所示,查询结果共返回106条记录,原因是其中一条记录缺少对应的部门信息,导致无法完全匹配。
9、 也可通过on为两表设定限制条件,此时即便使用natural join,配合join查询结果仍为106条记录。这种方式在关联时更灵活,但最终数据量保持不变。
10、 可通过where条件实现两表关联查询,筛选符合条件的数据结果。
11、 利用关联字段建立两张表之间的联系
12、 查询员工表a与部门表b通过部门ID关联,结果显示共106行记录,表明有106条员工信息成功匹配到对应的部门数据。
13、 左连接以左表为基准,按指定条件返回左表全部记录及右表中连接字段匹配的对应数据。
14、 从前面几张图可见,雇员表中存在一条无对应部门的数据,始终无法展示。若要完整显示雇员表的所有信息,必须采用左连接或右连接方式进行查询操作。
15、 右连接以右表为基准,返回右表全部记录及左表中连接字段匹配的记录。
16、 将雇员表置于右侧时,可通过右连接(right join...on)查询出所有雇员的完整数据信息。
17、 全外连接会将两张表中所有符合条件及不符合条件的数据一并查询出来,确保每条记录都能被包含。
18、 交叉连接,即两表各行相互组合生成结果集。
19、 交叉连接无需使用ON子句,会返回两表中所有数据行的组合,结果行数等于第一个表符合条件的行数与第二个表符合条件的行数相乘。
20、 当存在where条件时,其查询结果与使用join on连接的结果相同。
21、 无条件返回的结果
22、 Oracle除常规连接外,还具备其独有的连接方法。
23、 用where实现表连接,替代join on的自然连接方式。
24、 用逗号连接两张表,通过where条件实现关联查询功能
25、 左连接(+)右表可为空,右连接(+)左表可为空,括号位置指明允许为空的表。
26、 当加号在条件左侧时,右侧表的所有数据都会被完整显示出来。
27、 当加号位于条件右侧时,左侧表格的数据会完整显示。
评论
更多评论