毗连前提和毗连范例(内毗连,等值毗连,不等毗连,外毗连,左/
本文行使的数据来自《能干Oracle Database 12c SQL & PL/SQL编程(第三版)》。这里用到了两张表,products和product_types,别离为产物表和产物范例表。 products的数据展示如下:
product_types的数据展示如下:
毗连分为三中范例,即内毗连,外毗连和自毗连。内毗连按照毗连前提差异,可以分为等值毗连和不等毗连。等值毗连中行使的是便是操纵符(=),不等毗连在毗连中行使除等号外的操纵符(<,>,BETWEEN等);外毗连按照保存数据的偏向,分为左外毗连、右外毗连和全外毗连。 这里给出等值毗连和内毗连的较量: -- 内毗连 SELECT p.name,pt.name FROM products p INNER JOIN product_types pt ON p.product_type_id = pt.product_type_id ORDER BY p.name; -- 等值毗连 SELECT p.name,pt.name FROM products p,product_types pt WHERE p.product_type_id = pt.product_type_id ORDER BY p.name; 两者查询的功效一样,查询的服从也一样,可以看出凡是环境下,内毗连是默认行使等值毗连的。 二者的查询功效如下:
二者在时刻和空间的服从如下:
? 等值毗连的一个非凡环境是天然毗连。天然毗连是按照两个表中同名的罗列办毗连的,由于在现实操纵中,常常必要明晰指出按照哪些列毗连,因此天然毗连很罕用。 外毗连分为左外毗连、右外毗连和全外毗连。左外毗连保存左表的全部行(假如右表没有匹配行,取空值),右外毗连保存右表的全部行,全外毗连保存左表和右表的全部行(取不到则另一侧留空)。 个中左外毗连可以通过LEFT JOIN,或在右表加(+)实现;个中右外毗连可以通过RIGHT JOIN,或在左表加(+)实现;(+)老是在被保存数据的另一侧呈现。 全外毗连只能通过FULL JOIN实现,不存在双方(+)的写法。 -- 左外毗连 SELECT p.name,pt.name FROM products p,product_types pt WHERE p.product_type_id = pt.product_type_id(+) ORDER BY p.name; -- 左外毗连2 SELECT p.name,pt.name FROM products p LEFT JOIN product_types pt ON p.product_type_id = pt.product_type_id ORDER BY p.name; -- 右外毗连 SELECT p.name,product_types pt WHERE p.product_type_id(+) = pt.product_type_id ORDER BY p.name; -- 右外毗连2 SELECT p.name,pt.name FROM products p RIGHT JOIN product_types pt ON p.product_type_id = pt.product_type_id ORDER BY p.name -- 全外毗连 SELECT p.name,pt.name FROM products p FULL JOIN product_types pt ON p.product_type_id = pt.product_type_id ORDER BY p.name 自毗连一样平常用于有层级布局的,如员工表(查询某员工的上级都有谁),BOM(物料清单)等。这里暂不举例,后头再填坑。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |