English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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将第一个表的每一行与第二个表的每一行匹配。如果输入表分别具有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 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
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