数据库的查询方式

本文介绍了数据库的连接查询,包括内连接、外连接及其各种类型,如左外连接、右外连接、自然连接,并详细解释了每种连接方式的工作原理和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库的查询方式


数据库的连接查询分为3种方式

  1. 内连接
  2. 外连接
    1. 左外连接
    2. 右外连接
    3. 全外连接
  3. 自然连接

内连接

内连接有三种表示方式:

1. 方言版(不一定适用于所有数据库)
select *
from table1 t1, table2 t2
where t1.column1=t2.column2;

上述代码会先将table1的每一行和table2的每一行进行笛卡尔积组合,然后将符合条件的行筛选出来。

2. 标准版
select *
from table1 t1 inner join table2 t2
on t1.column1=t2.column2;

上述代码会先将table1的每一行和table2的每一行进行笛卡尔积组合,然后将符合条件的行筛选出来。

3. 自然连接版
select *
from table1 t1 natural join table2 t2;

上述代码会将table1和table2中所有共同属性列的值都相同的行进行组合并筛选出来。
其中natural join和natural inner join是一样的,因为自然连接默认就是内连接。

外连接

1. 左外连接
select *
from table1 t1 left outer join table2 t2
on t1.column1=t2.column2;

左表(即t1)是主表,每一行记录无论是否符合条件都会被查询出来。
右表(即t2)是从表,只有符合条件才能和主表记录连接。
若主表中的记录无法在从表中找到匹配,从表对应属性值为NULL。

2. 左外自然连接版
select *
from table1 t1 natural left outer join table2 t2;

大致与左外连接相同,区别只在于筛选条件。左外连接需要on语句,左外自然连接没有on语句,左主右从,只有所有共同属性列的值都相同才能连接,否则为NULL。

3. 右外连接
select *
from table1 t1 right outer join table2 t2
on t1.column1=t2.column2;

右表(即t2)是主表,每一行记录无论是否符合条件都会被查询出来。
左表(即t1)是从表,只有符合条件才能和主表记录连接。
若主表中的记录无法在从表中找到匹配,从表对应属性值为NULL。

4. 右外自然连接版
select *
from table1 t1 natural right outer join table2 t2;

大致与右外连接相同,区别只在于筛选条件。右外连接需要on语句,右外自然连接没有on语句,右主左从,只有所有共同属性列的值都相同才能连接,否则为NULL。

5. 全连接
select *
from table1 t1 full outer join table2 t2
on t1.column1=t2.column2;

返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的属性值为NULL。
相当于左外连接的结果表和右外连接的结果表用union连接。
(union将两个表连接后删除重复项,union all将两个表连接但不会删除重复项)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值