一、概述
1.SQLite定義了3種連接:交叉連接(CROSS JOIN)、內(nèi)連接(INNER JOIN)、外連接(OUTER JOIN)。
2.外連接(OUTER JOIN,OUTER關(guān)鍵字可以省略)是內(nèi)連接(INNER JOIN,默認(rèn)的連接類型,INNER關(guān)鍵字可以省略)的擴展。雖然 SQL 標(biāo)準(zhǔn)定義了三種類型的外連接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外連接(LEFT OUTER JOIN)。
二、SQLite的各種連接
假設(shè)數(shù)據(jù)庫表的名稱為A和B。
1.CROSS JOIN:將A表的每一行與B表的每一行進(jìn)行匹配,返回2個表中所有行的笛卡爾積。即:若A表和B表分別有x行和y行,則結(jié)果集中有x*y行。
2.INNER JOIN:取A表與B表的交集。
3.LEFT OUTER JOIN(即LEFT JOIN):取A表的所有行,并將B表中匹配的的字段包括在結(jié)果集中,若無匹配,則為NULL。
4.RIGHT OUTER JOIN(即RIGHT JOIN):取B表的所有行,并將A表中匹配的的字段包括在結(jié)果集中,若無匹配,則為NULL。
5.FULL OUTER JOIN(即FULL JOIN):取B表與B表的并集。
三、引申
1.SQLite 會自動為主鍵列創(chuàng)建索引。
2.開發(fā)機上可使用 Navicat for SQLite、DB Browser for SQLite、DbGate、、DBeaver、Antares SQL、DataGrip、SQLite Studio等工具來操作SQLite數(shù)據(jù)庫。
3.數(shù)據(jù)庫查詢時JOIN ON后面務(wù)必只寫連表條件,不能寫過濾條件,過濾條件要寫在WHERE后面,否則會導(dǎo)致意外的數(shù)據(jù)。
4.MySQL、H2等數(shù)據(jù)庫不支持FULL JOIN。
5.SQLite不支持RIGHT JOIN、FULL JOIN。
6.MySQL、SQLite、H2等數(shù)據(jù)庫不支持sql92連表。
7.SQLite 不支持一些 ALTER TABLE 功能。 除此之外,SQLite 擁有完整的觸發(fā)器,事務(wù)等。
微風(fēng)不燥,陽光正好,你就像風(fēng)一樣經(jīng)過這里,愿你停留的片刻溫暖舒心。
我是程序員小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等編程技術(shù)的技巧經(jīng)驗分享),若作品對您有幫助,請關(guān)注、分享、點贊、收藏、在看、喜歡,您的支持是我們?yōu)槟峁椭淖畲髣恿Α?/p>
歡迎關(guān)注。助您在編程路上越走越好!