Was das Schlüsselwort „join“ in der SQL-Anweisung betrifft, handelt es sich um ein häufig verwendetes Schlüsselwort, das jedoch nicht leicht zu verstehen ist. Das folgende Beispiel gibt eine einfache Erklärung – Erstellen von Tabellen Tabelle1, Tabelle2:
create table table1(id int,name varchar (10))
Tabelle erstellen table2(id int,score int)
In Tabelle1 einfügen, 1 auswählen,'lee'
In Tabelle1 einfügen, 2 auswählen,'zhang'
In Tabelle1 einfügen, 4 auswählen, 'wang'
In Tabelle2 einfügen, 1,90 auswählen
In Tabelle2 einfügen, 2,100 auswählen
In Tabelle2 einfügen, 3,70 auswählen
wie in der Tabelle gezeigt
--- ----- ---------------------------------------------
Tabelle1 | Tabelle2 |
---------------- ----- -----
ID-Name |ID-Score |
1 Lee |1 90 |
2 Zhang |2 100 |
4 Wang |3 70 |
- ----- --------------------------------------------- -----
folgend Alle werden im Abfrageanalysator ausgeführt
1. Outer Join
1 >
(1) Die Ergebnismenge eines Left Outer Joins umfasst alle Zeilen der linken Tabelle, die in der LEFT OUTER-Klausel angegeben sind, nicht nur die Zeilen, mit denen übereinstimmt Spalten verbinden. Wenn eine Zeile in der linken Tabelle keine passende Zeile in der rechten Tabelle hat, sind alle Auswahllistenspalten der rechten Tabelle in der zugehörigen Ergebnissatzzeile null.
(2)SQL-Anweisung
select * from table1 left join table2 on table1.id=table2.id
-------------Ergebnis------- ------
ID-Name-ID-Score
---------------------------------
1 Lee 1 90
2 Zhang 2 100
4 Wang NULL NULL
----------------------------------------- ------
Hinweis: Enthält alle Klauseln von Tabelle1, gibt die entsprechenden Felder von Tabelle2 gemäß den angegebenen Bedingungen zurück und zeigt null an, wenn sie nicht erfüllt sind
(1) Der rechte äußere Join ist der umgekehrte Join des linken äußeren Joins. Alle Zeilen aus der rechten Tabelle werden zurückgegeben. Wenn eine Zeile in der rechten Tabelle keine entsprechende Zeile in der linken Tabelle hat, wird für die linke Tabelle null zurückgegeben.
(2)SQL-Anweisung
select * from table1 right join table2 on table1.id=table2.id
-------------Ergebnis------- ------
ID-Name-ID-Score
---------------------------------
1 Lee 1 90
2 Zhang 2 100
NULL NULL 3 70
----------------------------------------- ------
Hinweis: Enthält alle Klauseln von Tabelle2, gibt die entsprechenden Felder von Tabelle1 gemäß den angegebenen Bedingungen zurück und zeigt null an, wenn sie nicht erfüllt sind
(1) Vollständiger äußerer Join gibt alle Zeilen aus der linken und rechten Tabelle zurück. Wenn es für eine Zeile keine passende Zeile in einer anderen Tabelle gibt, enthält die Auswahllistenspalte der anderen Tabelle Nullwerte. Wenn zwischen Tabellen übereinstimmende Zeilen vorhanden sind, enthält die gesamte Ergebnissatzzeile die Datenwerte aus der Basistabelle.
(2)SQL-Anweisung
select * from table1 full join table2 on table1.id=table2.id
-------------Ergebnis------- ------
ID-Name-ID-Score
---------------------------------
1 Lee 1 90
2 Zhang 2 100
4 Wang NULL NULL
NULL NULL 3 70
---------------------------------- --- -------
Hinweis: Gibt die Summe der linken und rechten Verknüpfungen zurück (siehe linke und rechte Verknüpfungen oben)
1 werden mithilfe von Vergleichsoperatoren verglichen. Verbinden, um Spaltenwerte zu verbinden
select * from table1 join table2 on table1.id=table2 .id
-------------Ergebnis-------------
ID-Name ID-Score
-------- ------
1 Lee 1 90
2 Zhang 2 100
------------- -
Hinweis: Geben Sie nur die Spalten von Tabelle1 und Tabelle2 zurück, die die Bedingungen erfüllen
A:wählen Sie a.*,b.* aus Tabelle1 a,Tabelle2 b aus, wobei a.id=b.id ist
B:wählen Sie * aus Tabelle1 aus, Cross-Join-Tabelle2, wobei Tabelle1.id=Tabelle2.id (Hinweis: Cross-Join Sie können Where nur verwenden, um später Bedingungen hinzuzufügen, nicht auf)
Wählen Sie * aus Tabelle1 Cross-Join-Tabelle2
-------------Ergebnis-------------
ID-Name ID-Score
--- -------------------------
1 Lee 1 90
2 Zhang 1 90
4 Wang 1 90
1 Lee 2 100
2 Zhang 2 100
4 Wang 2 100
1 Lee 3 70
2 Zhang 3 70
4 Wang 3 70
------ -- ---------------------
Hinweis: Geben Sie 3*3=9 Datensätze zurück, also ein kartesisches Produkt
A:select * from table1,table2