# 数据准备
create table t_group (
group_id number(4) not null,
group_name varchar2(15)
);
create table t_person (
person_id number(4) not null,
person_name varchar2(15),
group_id number(4)
);
insert into t_group(group_id, group_name) values(1, 'RESEARCH');
insert into t_group(group_id, group_name) values(2, 'SALES');
insert into t_person(person_id, person_name, group_id) values(1, 'zhangsan', 1);
insert into t_person(person_id, person_name, group_id) values(2, 'lisi', 1);
insert into t_person(person_id, person_name) values(3, 'wangwu');
commit;
# 交叉连接(cross join)
# 笛卡尔积(左表 x 右表)
select g.group_id, g.group_name, p.person_name
from t_group g cross join t_person p;
等同于
select g.group_id, g.group_name, p.person_name
from t_group g, t_person p;
# 自然连接(natural join)
# 自动对同名属性进行比较
select group_id, group_name, person_name
from t_group g natural join t_person p;
# 左连接(left join == left outer join)
# 以左表为准,右表无数据时补空
select g.group_id, g.group_name, p.person_name
from t_group g left join t_person p on g.group_id=p.group_id;
# 右连接(right join == right outer join)
# 以右表为准,左表无数据时补空
select g.group_id, g.group_name, p.person_name
from t_group g right join t_person p on g.group_id=p.group_id;
# 全连接(full join == full outer join)
# 返回左右表的所有记录,任何一方无数据时补空
select g.group_id, g.group_name, p.person_name
from t_group g full join t_person p on g.group_id=p.group_id;
# 内连接(join == inner join)
# 只返回相匹配的
select g.group_id, g.group_name, p.person_name
from t_group g join t_person p on g.group_id=p.group_id;
# 等值连接(与内连接相同,只是 sql 格式不一样)
select g.group_id, g.group_name, p.person_name
from t_group g, t_person p
where g.group_id=p.group_id;
# 条件查询(泛指带 where 条件的查询)
select person_id, person_name, group_id from t_person where group_id is not null;
分享到:
相关推荐
数据库连接操作 数据库连接操作是关系数据库管理系统中的一种常用操作,用于将多个表中的数据结合起来,以便查询和分析。连接操作可以在 SELECT 语句的 FROM 子句或 WHERE 子句中建立。 一、内连接 内连接(INNER...
本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...
根据连接的方式不同,可以分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全连接(FULL JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。每种连接类型都有其特定的应用场景和使用...
交叉连接不使用任何特定的连接条件,它返回两个表所有数据行的笛卡尔积,即第一个表的每行与第二个表的每行组合。结果集的大小等于第一个表的行数乘以第二个表的行数。 连接操作中的ON (join_condition) 子句至关...
根据连接的方式和结果,SQL连接可以分为内连接、左连接、右连接、全连接和交叉连接等多种类型。 内连接 内连接是最基本的连接类型,它将两个表格中的数据根据某个条件连接起来。内连接可以分为等值连接、不等值...
全连接返回左表和右表的所有行,即使另一表中没有匹配。如果在任一表中找不到匹配的行,结果将填充NULL。 ```sql SELECT authors.*, publishers.* FROM authors FULL OUTER JOIN publishers ON authors....
在MySQL中,虽然不直接支持全外连接,但可以通过结合左外连接和右外连接达到相同的效果。例如,`SELECT * FROM voteMaster vm LEFT OUTER JOIN voter vt ON vm.id=vt.id UNION ALL SELECT * FROM voteMaster vm ...
本文主要探讨了四种基本的表连接类型:内连接、外连接(包括左外连接、右外连接)以及交叉连接。 首先,内连接(INNER JOIN)基于指定的连接条件,返回两个表中匹配的行。它又分为等值连接、自然连接和不等连接。...
全连接结合了左连接和右连接,返回两个表中所有记录,无论是否存在匹配。如果某条记录在其中一个表中没有匹配项,结果将用NULL填充缺失的列。 4. **内连接(Inner Join 或 Join)**: 内连接是最常见的连接类型,...
本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...
此外,还有交叉连接(CROSS JOIN),也称为笛卡尔积,它会返回左表的每一行与右表的每一行的组合,结果集的大小是两个输入表行数的乘积。 在SQL代码示例中,使用临时表`@TA`和`@TB`展示了不同类型的连接。内连接的...
### 数据库连接表查询详解 #### 一、交叉连接(CROSS JOIN) **定义与特点:** 交叉连接(CROSS JOIN)是一种特殊的连接方式,它返回的是参与连接的两个表的所有可能组合,即两个表的笛卡尔积。这种连接不包含任何...
全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。 例如: 语句 5:左外连接(Left Outer Join) select o.id, o.order_number, o.customer_id...
总结,数据库连接是数据库管理系统中的核心功能,通过内连接、外连接和交叉连接,我们可以根据需求灵活地组合和筛选数据,实现复杂的数据分析和查询。理解并熟练运用这些连接类型对于任何数据库操作人员来说都是至关...
此示例通过联合左外连接和右外连接的结果来模拟全外连接的行为。 #### 六、UNION JOIN与外连接的关系 在某些数据库中,可以使用`UNION`来模拟全外连接。然而,并不是所有的数据库系统都支持`UNION JOIN`语法,比如...
外连接分为三种类型:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 **语法**: - **左外连接**: ```sql SELECT column_name(s) FROM table1 LEFT OUTER JOIN ...
交叉连接是一种特殊的连接类型,它返回左表和右表的所有可能组合。这意味着如果左表有m行,右表有n行,则结果集将包含m*n行。然而,除非有特定需求,否则交叉连接很少在实际应用中使用,因为其结果通常包含大量冗余...
本文将详细解析五种不同的连接类型:内连接、左外连接、右外连接、全连接和交叉连接。 1. 内连接(INNER JOIN) 内连接是最常见的连接类型,它只返回两个表格中满足特定连接条件的行。这意味着结果集只包含那些在...
- **全外连接(Full Outer Join)**:返回左表和右表中所有的记录,左表和右表中没有匹配的数据会用`NULL`填充。 - 示例代码: ```sql SELECT t.*, s.* FROM teacher t FULL OUTER JOIN student s ON t.id = s....