数据库——自然连接、内连接、外连接(左外连接、右外连接、全外连接)、交叉连接

本文详细介绍了SQL中的四种主要连接方式:自然连接、内连接、外连接及交叉连接,并通过实例展示了每种连接的具体用法。

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

1. 自然连接(*natural join)*
学生表这里写图片描述
自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列,

 `SELECT*FROM student NATURAL JOIN score;`

显示结果如下:
这里写图片描述
2. 内连接(inner join
和自然连接区别之处在于内连接可以自定义两张表的不同列字段。
内连接有两种形式:显式和隐式。
例:以下语句执行结果相同。
这里写图片描述

①隐式的内连接,没有INNER JOIN,形成的中间表为两个表的笛卡尔积。

SELECT student.name,score.codeFROM student,score WHERE score.code=student.code;

② 显示的内连接,一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。

SELECT student.name,score.codeFROM student INNER JOIN score ON score.code=student.code;

3.外连接(outer join
①左外连接(left outer join):返回指定左表的全部行+右表对应的行,如果左表中数据在右表中没有与其相匹配的行,则在查询结果集中显示为空值。
例:SELECT student.name,score.codeFROM student LEFT JOIN score ON score.code=student.code;
查询结果如下:
这里写图片描述
②右外连接(right outer join):与左外连接类似,是左外连接的反向连接。

SELECT student.name,score.codeFROM student RIGHT JOIN score ON score.code=student.code;
这里写图片描述
②全外连接(full outer join):把左右两表进行自然连接,左表在右表没有的显示NULL,右表在左表没有的显示NULL。(MYSQL不支持全外连接,适用于Oracle和DB2。)

在MySQL中,可通过求左外连接与右外连接的合集来实现全外连接。
例:

SELECT student.name,score.codeFROM student LEFT JOIN score ON
score.
code=student.codeUNION SELECT student.name,score.code
FROM student RIGHT JOIN score ON score.
code=student.code;

4.交叉连接(cross join:相当与笛卡尔积,左表和右表组合。
SELECT student.name,score.code FROM student CROSS JOIN score ON score.code=student.code;
这里写图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值