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

SQLite Verknüpfungen

SQLite JoinsDer Ausdruck wird verwendet, um Aufzeichnungen aus zwei oder mehreren Tabellen in einer Datenbank zu kombinieren. JOIN ist eine Methode, um Felder aus zwei Tabellen zu kombinieren, indem gemeinsame Werte aus jeder Tabelle verwendet werden.

SQL definiert drei Haupttypen von Verbindungen-

  • Kreuzverbindung

  • innere Verknüpfung

  • Außenverknüpfung

Bevor wir weitermachen, lassen Sie uns die beiden Tabellen COMPANY und DEPARTMENT in Betracht ziehen. Wir haben bereits die INSERT-Anweisungen gesehen, um die COMPANY-Tabelle zu füllen. Also nehmen wir an, dass die Liste der verfügbaren Aufzeichnungen in der COMPANY-Tabelle folgt-

ID NAME AGE ADDRESS SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          Kalifornien  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norwegen      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

Eine andere Tabelle ist DEPARTMENT und hat die folgenden Definitionen-

CREATE TABLE DEPARTMENT(
   ID INT PRIMÄRER SCHLÜSSEL NOT NULL,
   DEPT		CHAR(50) NOT NULL,
   EMP_ID		INT		NOT NULL
;

Dies ist die Liste der INSERT-Anweisungen, die zum Füllen der Tabelle DEPARTMENT verwendet werden-

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 ;

Schließlich haben wir in der Tabelle DEPARTMENT die folgenden verfügbaren Record-Liste-

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

CROSS JOIN - Kreuzverbindung

CROSS JOIN paart jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle. Wenn die Eingabetabellen x und y Zeilen haben, hat die Ergebnistabelle x * y Zeilen. * y Zeilen. Da CROSS JOINs möglicherweise sehr große Tabellen erzeugen können, müssen Sie darauf achten, sie nur zu dem richtigen Zeitpunkt zu verwenden.

以下是CROSS JOIN的语法-

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

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

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

Die obige Abfrage wird die folgenden Ergebnisse erzeugen-

EMP_ID      NAME        DEPT
----------  ----------  ----------
1           Paul        IT Rechnungswesen
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 - innere Verknüpfung

INNER JOIN durch Kombination beider Tabellen (table1und table2)Spaltenwerte, um eine neue Resultattable zu erstellen. Diese Abfrage wird table1jedes Zeile mit table2jedes Zeile miteinander verglichen, um alle Zeilenpaare zu finden, die den join-Vorbehalt erfüllen. Wenn der Join-Vorbehalt erfüllt ist, werden die Spaltenwerte jeder passenden Zeilenpaar von A und B zu einer neuen Resultatzeile kombiniert.

INNER JOIN ist der häufigste Standardverknüpfungstyp. Sie können den INNER-Schlüsselwort verwenden.

Hier ist die Syntax des INNER JOIN-

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

Um Redundanz zu vermeiden und die Kürze der Phrasen zu verkürzen, kannUSINGAusdrucksbedingung zur Deklaration der INNER JOIN-Bedingung. Dieser Ausdruck spezifiziert eine Liste von einer oder mehreren Spalten.

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

NATURAL JOIN mitJOIN...USINGNatürlich ähnlich, nur dass es automatisch überprüft, ob die Werte der Spalten in beiden Tabellen gleich sind-

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

Basierend auf der obigen Tabelle können Sie eine INNER JOIN schreiben, wie folgt:

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

Die obige Abfrage wird die folgenden Ergebnisse erzeugen-

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

OUTER JOIN - Außenverknüpfung

OUTER JOIN ist eine Erweiterung des INNER JOIN. Obwohl der SQL-Standard drei Arten von äußeren Verknüpfungen definiert hat: LEFT, RIGHT und FULL, unterstützt SQLite nurLEFT OUTER JOIN.

Die Bedingungen der äußeren Verknüpfung sind mit denen der inneren Verknüpfung identisch und werden mit ON, USING oder NATURAL-Schlüsselworten dargestellt. Die Berechnung des Initialresultatetables ist gleich. Sobald das Haupt-JOIN berechnet wurde, holt die OUTER JOIN alle nicht verbundenen Zeilen aus einem oder zwei Tabellen, füllt sie mit NULL aus und fügt sie dem Resultatetable hinzu.

Hier ist die Syntax des LEFT OUTER JOIN-

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

Um Redundanz zu vermeiden und die Kürze der Phrasen zu verkürzen, kann die USING-Ausdrucksbedingung zur Deklaration der OUTER JOIN-Bedingung verwendet werden. Dieser Ausdruck spezifiziert eine Liste von einer oder mehreren Spalten.

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

Basierend auf der obigen Tabelle können Sie eine interne Verknüpfung schreiben, wie folgt:

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

Die obige Abfrage wird die folgenden Ergebnisse erzeugen-

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