【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表

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

1. INNER  JOIN

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

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

 2.LEFT JOIN

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

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

 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行

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

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

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

感谢观看!!!!

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

你可能感兴趣的:(数据库学习,数据库,sqlite,sqlite3)