SQL的几种连接:内连接、左连接、右连接、全连接、交叉连接

改编自http://www.cnblogs.com/zxlovenet/p/4005256.html
并在mysql自行进行实验。

SQL连接可分为内连接、外连接、交叉连接。

数据库数据:
student表
student表
bookloan表
bookloan表

  • 内连接

1.1 等值连接:在连接条件中使用等于号运算符比较连接列的列值,其查询结果中列出被连接表中的所有列包括其中的重复列

select *
from student as a, bookloan as b
where a.stuid = b.stuid;

等价于

select *
from student as a inner join bookloan as b
on a.stuid = b.stuid;

这里写图片描述

1.2 不等值连接:在连接条件中使用除等于运算符以外的其它比较运算符比较被连接的列的列值。其实就是在笛卡尔积的基础上进行筛选。

select *
from student as a, bookloan as b
where a.stuid <> b.stuid;

这里写图片描述

1.3 自然连接:在连接条件中使用等于运算符比较被连接列的列值,但它使用选择列表指出查询结果中所包括的列,消除同名列,注意这里不需要。

select *
from student as a natural join bookloan as b;

这里写图片描述

  • 外连接

2.1 左连接:以左表为基准,进行连接。

select *
from student as a left join bookloan as b
on a.stuid = b.stuid;

这里写图片描述
2.2 右连接:以右表为基准,进行连接。

select *
from student as a right join bookloan as b
on a.stuid = b.stuid;

这里写图片描述
2.3 全连接:完整外部连接返回左表和右表中所有的列。当某行在另一个表中没有匹配行时,则另一个表的选择表列包含空值。如果表之间没有匹配行,则整个结果集行包含基表的数据值。
mysql不支持全连接

  • 交叉连接:就是笛卡尔积
    所以内连接和交叉连接的效果是一样的知识前者要在条件下进行过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值