【SQLite】SQLite数据库的内连接INNER JOIN、左连接LEFT JOIN、右连接RIGHT JOIN和交叉连接CROSS JOIN 关键字

1.JOIN的区分

JOIN分为

INNER  JOIN内连接

CROSS JOIN交叉连接

OUTER JOIN外连接,其中外连接OUTER JOIN又分为

  • 左连接LEFT (OUTER) JOIN
  • 右连接RIGHT (OUTER) JOIN
  • 全连接FULL (OUTER) JOIN
     

2.基本概念

1. INNER  JOIN

内连接,显示两个表中有联系的所有数据,也叫等值连接

2. LEFT JOIN

左连接,以左表为参照,显示所有数据,左表中的某行在右表中没有匹配行,则以NULL显示

3. RIGHT JOIN 

右连接,显示右表所有数据,如果右表的某行在左表中没有匹配行,则将为左表返回NULL 

4. FULL JOIN

全外连接,返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值,如果表之间有匹配行,则整个结果集行包含基表的数据值

5. CROSS JOIN

交叉连接,两个表做笛卡尔积,得到的结果集的行数是两个表的行数的乘积

3.案例

这边有两个表,我们一一来进行测试

Course表

和Mark表

1. INNER  JOIN

两个表中有联系的都会被显示出来

 2.LEFT JOIN

左表显示全部数据,右表和左表进行匹配,匹配不上的右表返回NULL

 3.RIGHT JOIN

右连接其实就是跟左连接结果相反,因为普通的SQLite不支持右连接和全外连接,但是好像6月25日更新的SQLite 3.39.0 版本可以支持右连接和全外连接

4.CROSS JOIN

结果是两个表做笛卡尔积,那什么是笛卡尔积呢?

令A和B是任意两个集合,若序偶(带顺序的集合)的第一个成员是A的元素,第二个成员是B的元素,所有这样的序偶集合,称为集合A和B的笛卡尔乘积或直积,记做A X B

可以看到, Course表去掉表头共2行,Mark表去掉表头共4行,结果就是8行

FROM子句中使用逗号间隔连接的表也可以做到类似的效果,实际上,这两种表达式是等价的

感谢观看!!!!

以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

logani

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值