SQLite各种连接大展神威

程序员小迷 2024-07-14 13:39:13

一、概述

1.SQLite定义了3种连接:交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTER JOIN)。

2.外连接(OUTER JOIN,OUTER关键字可以省略)是内连接(INNER JOIN,默认的连接类型,INNER关键字可以省略)的扩展。虽然 SQL 标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。

二、SQLite的各种连接

假设数据库表的名称为A和B。

1.CROSS JOIN:将A表的每一行与B表的每一行进行匹配,返回2个表中所有行的笛卡尔积。即:若A表和B表分别有x行和y行,则结果集中有x*y行。

2.INNER JOIN:取A表与B表的交集。

3.LEFT OUTER JOIN(即LEFT JOIN):取A表的所有行,并将B表中匹配的的字段包括在结果集中,若无匹配,则为NULL。

4.RIGHT OUTER JOIN(即RIGHT JOIN):取B表的所有行,并将A表中匹配的的字段包括在结果集中,若无匹配,则为NULL。

5.FULL OUTER JOIN(即FULL JOIN):取B表与B表的并集。

三、引申

1.SQLite 会自动为主键列创建索引。

2.开发机上可使用 Navicat for SQLite、DB Browser for SQLite、DbGate、、DBeaver、Antares SQL、DataGrip、SQLite Studio等工具来操作SQLite数据库。

3.数据库查询时JOIN ON后面务必只写连表条件,不能写过滤条件,过滤条件要写在WHERE后面,否则会导致意外的数据。

4.MySQL、H2等数据库不支持FULL JOIN。

5.SQLite不支持RIGHT JOIN、FULL JOIN。

6.MySQL、SQLite、H2等数据库不支持sql92连表。

7.SQLite 不支持一些 ALTER TABLE 功能。 除此之外,SQLite 拥有完整的触发器,事务等。

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

0 阅读:205

程序员小迷

简介:致力于Android、iOS、C、Java等编程技术的技巧经验分享