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

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;
这里写图片描述

  • 53
    点赞
  • 289
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
当我们在处理数据库中的多个表时,连接操作是非常常见的。SQL中有几种连接类型,包括左连接连接内连接外连接。 1. 左连接(Left Join): 左连接返回左表中的所有记录,以及表中与左表匹配的记录。如果表中没有匹配的记录,则返回NULL值。 左连接的语法如下: ``` SELECT 列名 FROM 左表 LEFT JOIN 表 ON 连接条件; ``` 相关问题: 1. 什么是左连接? 2. 左连接的语法是什么? 3. 左连接返回的结果是什么? 2. 连接(Right Join): 连接返回表中的所有记录,以及左表中与表匹配的记录。如果左表中没有匹配的记录,则返回NULL值。 连接的语法如下: ``` SELECT 列名 FROM 左表 RIGHT JOIN 表 ON 连接条件; ``` 相关问题: 1. 什么是连接? 2. 连接的语法是什么? 3. 连接返回的结果是什么? 3. 内连接(Inner Join): 内连接返回两个表中满足连接条件的记录。只有在两个表中都存在匹配的记录时,才会返回结果。 内连接的语法如下: ``` SELECT 列名 FROM 表1 INNER JOIN 表2 ON 连接条件; ``` 相关问题: 1. 什么是内连接? 2. 内连接的语法是什么? 3. 内连接返回的结果是什么? 4. 外连接(Outer Join): 外连接包括左外连接外连接,它返回两个表中满足连接条件的记录,以及未匹配的记录。 左外连接返回左表中的所有记录,以及表中与左表匹配的记录。如果表中没有匹配的记录,则返回NULL值。 外连接返回表中的所有记录,以及左表中与表匹配的记录。如果左表中没有匹配的记录,则返回NULL值。 外连接的语法如下: ``` SELECT 列名 FROM 左表 LEFT JOIN 表 ON 连接条件; SELECT 列名 FROM 左表 RIGHT JOIN 表 ON 连接条件; ``` 相关问题: 1. 什么是外连接? 2. 外连接的语法是什么? 3. 外连接返回的结果是什么?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值