English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

联接SQLite

SQLite JoinsLa clause est utilisée pour fusionner les enregistrements de deux ou plusieurs tables dans une base de données. JOIN est une méthode pour combiner des champs de deux tables en utilisant des valeurs communes de chaque table.

SQL définit trois types principaux de jointures-

  • 交叉联接

  • jointure interne

  • jointure externe

Avant de continuer, considérons deux tables COMPANY et DEPARTMENT. Nous avons vu des instructions INSERT pour remplir la table COMPANY. Donc, supposons que la liste des enregistrements disponibles dans la table COMPANY-

ID NOM ÂGE ADRESSE SALAIRE
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Une autre table est DEPARTMENT, elle a les définitions suivantes-

CREATE TABLE DEPARTMENT
   ID INT PRIMARIE CLÉE NON NULL
   DEPT           CHAR(50) NOT NULL,
   EMP_ID         INT      NOT NULL
);

这是用于填充DEPARTMENT表的INSERT语句的列表-

INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (1, 'IT Billing', 1 );
INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (2, 'Engineering', 2 );
INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (3, 'Finance', 7 );

最后,我们在DEPARTMENT表中有以下可用的记录列表-

ID          DEPT        EMP_ID
----------  ----------  ----------
1           IT Billing  1
2           Engineering 2
3           Finance     7

CROSS JOIN - 交叉联接

CROSS JOIN将第一个表的每一行与第二个表的每一行匹配。如果输入表分别具有x和y行,则结果表将具有x * y行。由于CROSS JOINs可能会生成极大的表,因此必须注意仅在适当的时候使用它们。

以下是CROSS JOIN的语法-

SELECT ... FROM table1 CROSS JOIN table2 ...

根据上表,您可以编写CROSS JOIN,如下所示:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;

上面的查询将产生以下结果-

EMP_ID      NAME        DEPT
----------  ----------  ----------
1           Paul        IT Billing
2           Paul			Engineering
7           Paul			Finance
1           Allen			IT Billing
2           Allen       Engineering
7           Allen			Finance
1           Teddy			IT Billing
2           Teddy			Engineering
7           Teddy			Finance
1           Mark			IT Billing
2           Mark			Engineering
7           Mark			Finance
1           David			IT Billing
2           David			Engineering
7           David			Finance
1           Kim			IT Billing
2           Kim			Engineering
7           Kim			Finance
1           James			IT Billing
2           James			Engineering
7           James       Finance

INNER JOIN - jointure interne

INNER JOIN combine deux tables (table1et table2Pour créer un nouveau tableau de résultat en combinant les valeurs des colonnes1et table2Pour comparer chaque ligne avec

INNER JOIN est le type de jointure le plus couramment utilisé et par défaut. Vous pouvez choisir d'utiliser le mot-clé INNER.

Voici la syntaxe de INNER JOIN-

SELECT ... FROM table1 [INNER] JOIN table2 ON expression_conditionnelle ...

Pour éviter les redondances et raccourcir les phrases, vous pouvez utiliserUSINGL'expression déclare les conditions de la jointure interne. Cette expression spécifie une ou plusieurs listes de colonnes.

SELECT ... FROM table1 JOIN table2 USING ( colonne1 ,... ) ...

JOIN NATURAL avecJOIN ... USINGSimilaire naturellement, il teste automatiquement si les valeurs des colonnes de deux tables sont égales-

SELECT ... FROM table1 JOIN NATURAL table2...

Basé sur le tableau ci-dessus, vous pouvez écrire une INNER JOIN, comme suit :

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID;

上面的查询将产生以下结果-

EMP_ID      NAME        DEPT
----------  ----------  ----------
1           Paul        IT Billing
2           Allen       Engineering
7           James       Finance

OUTER JOIN - jointure externe

La jointure externe est une extension de la jointure interne. Bien que le standard SQL définisse trois types de jointures externes : LEFT, RIGHT et FULL, SQLite ne prend en charge queLEFT OUTER JOIN.

Les conditions de jointure externe sont les mêmes que celles de la jointure interne, représentées par les mots-clés ON, USING ou NATURAL. La méthode de calcul du tableau de résultat initial est la même. Une fois que le JOIN principal a été calculé, la jointure externe récupérera toutes les lignes non connectées d'une ou deux tables, les remplira de NULL et les ajoutera au tableau de résultat.

Voici la syntaxe de LEFT OUTER JOIN-

SELECT ... FROM table1 LEFT OUTER JOIN table2 ON expression_conditionnelle ...

Pour éviter les redondances et raccourcir les phrases, vous pouvez utiliser l'expression USING pour déclarer les conditions de la jointure externe. Cette expression spécifie une ou plusieurs listes de colonnes.

SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( colonne1 ,... ) ...

Basé sur le tableau ci-dessus, vous pouvez écrire une jointure interne, comme suit :

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID;

上面的查询将产生以下结果-

EMP_ID      NAME        DEPT
----------  ----------  ----------
1           Paul        IT Billing
2           Allen       Engineering
            Teddy
            Mark
            David
            Kim
7           James       Finance