自然连接查询:natural join
自动判断两个表中相同的列,然后进行匹配。连接后,相同的列只是保留一个。
内连接查询:inner join
查询出来俩个表公共部分!其中inner可以不写。默认是内连接。
外连接查询:
(+)写在那个表的后面,那个表就为附属表,另一个则为主表。这个是外连接的简写。
如:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+)
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
其中department d为附属表,employee e为主表。
(左外连接)left join
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
(右外连接)right join
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
(全外连接)full join
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
交叉连接查询:cross join
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
SQL语句如下:
select * from mt_pb_org o cross join mt_pb_orgframe f;
等价语句:
select * from mt_pb_org o , mt_pb_orgframe f;