Manchmal müssen Sie Daten aus mehreren Tabellen anzeigen. Um dies durchzuführen, müssen Sie eine Tabelle mit einer anderen Tabelle verknüpfen. Es gibt verschiedene Möglichkeiten, wie wir Daten aus mehreren Tabellen erhalten können. Hier würde ich mich auf Oracle Joins mit Beispielen konzentrieren. Dies gilt im Allgemeinen auch für alle Sql Joins . Ich würde innere Verknüpfung, äußere Verknüpfung, Kreuzverknüpfung, natürliche Verknüpfung, kartesische Verknüpfung mit Beispielen erklären
Oracle Joins
Ein Orakel tritt bei ist eine Abfrage, die Zeilen aus zwei oder mehr Oracle-Tabellen kombiniert.
Oracle führt immer dann einen Join durch, wenn mehrere Tabellen in der FROM-Klausel erscheinen. Um zwei Tabellen zusammenzuführen, müssen Sie die gemeinsamen Spalten identifizieren, die die beiden Tabellen miteinander in Beziehung setzen. In der WHERE-Klausel definieren Sie die Beziehung zwischen den in der FROM-Klausel aufgeführten Tabellen.
Einige Richtlinien für Oracle-Joins (SQL-Joins)
1) Beim Schreiben der select-Anweisung, die Tabellen verbindet, empfiehlt es sich, dem Spaltennamen aus Gründen der Übersichtlichkeit den Tabellennamen voranzustellen.
2) Um m Tabellen zu verbinden, brauchen wir mindestens m-1 Bedingungen
3) Wir können den Tabellenalias für den Tabellennamen verwenden, wenn der Tabellenname lang ist. Tabelle sieht den Code kürzer und damit weniger Speicher aus
4) Wenn Sie beim Auswählen der Spalte keinen Tabellennamen oder Tabellenalias verwenden und wenn mehrere Tabellen den gleichen Spaltennamen haben, sollten wir den Tabellennamen für die Spalte angeben, der allen Tabellen gemeinsam ist
Innere Verbindung
Der am häufigsten verwendete Operator zum Verknüpfen zweier Tabellen ist der Gleichheitsoperator (=). Dies wird als Gleichheitsverknüpfung oder Equijoin bezeichnet . Dieser einfache Join wird auch als Inner Join bezeichnet
Oracle Inner Join-Beispiel
Syntax
Select tab1.col,tab2.col
from tab1 ,tab2
where tab1.col=tab2.col
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP , DEPT
where EMP. DEPTNO= DEPT. DEPTNO;
Um einen Join von drei oder mehr Tabellen auszuführen, verbindet Oracle zwei Tabellen basierend auf der Join-Bedingung, verknüpft dann das Ergebnis mit einer anderen Tabelle basierend auf den Join-Bedingungen und wiederholt dies, bis alle Tabellen verknüpft sind.
Komplexe Verknüpfungen
Fügen Sie der WHERE-Klausel eine oder mehrere Bedingungen hinzu. Wenn Sie beispielsweise an allen Abteilungen und deren Standorten außerhalb des Vereinigten Königreichs interessiert sind, verwenden Sie
SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';
Nicht-Equijoin
Ein Nicht-Equijoin ist eine andere Join-Bedingung als der Gleichheitsoperator.
Es ist eine Inner Join-Anweisung, die eine ungleiche Operation verwendet (d. h.:<>,>, <, =, BETWEEN usw.), um Zeilen aus verschiedenen Tabellen abzugleichen
SELECT e.ename, e.sal, s.grade
FROM emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;
Kartesische Produkte oder kartesischer Join oder Cross Join
– Ein kartesischer Join (oder kartesisches Produkt) (oder Cross Join) tritt auf, wenn Daten aus zwei oder mehr Tabellen ausgewählt werden und eine Join-Bedingung definiert ist oder keine gemeinsame Beziehung in der WHERE-Klausel definiert ist
-Wenn ein Join durchgeführt wird und keine Join-Bedingung angegeben ist, ergibt sich ein kartesisches Produkt. Ein kartesisches Produkt ist eine Ergebnismenge, die das Produkt der Gesamtzeilen der beiden Tabellen ist. Wenn Tabelle „P“ 100 Zeilen und Tabelle „Q“ 100 Zeilen hat und ein kartesisches Produkt entwickelt wird, hat die resultierende Ergebnismenge 10000 Zeilen. Wenn eine Abfrage drei oder mehr Tabellen verknüpft, findet der Optimierer möglicherweise eine Möglichkeit, eine Verknüpfungsreihenfolge auszuwählen, die ein kartesisches Produkt ausschließt, aber verlassen Sie sich nicht darauf.
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP cross join DEPT ;
Äußere Joins
Die inneren Joins, die wir gesehen haben, geben die übereinstimmenden Zeilen aus zwei oder mehr Tabellen gemäß der Join-Bedingung zurück. Der Outer-Join-Mechanismus gibt die Daten aus einer Tabelle zurück, auch wenn es keine entsprechende Zeile in der Join-Tabelle gibt.
Es gibt drei äußere Joins
a) Left Outer Join oder Left Join
b) Right Outer Join oder Right Join
c) Full Outer Join oder Full Join
Left Outer Join
gibt die übereinstimmenden Zeilen aus beiden Tabellen sowie die nicht übereinstimmenden Zeilen aus der Tabelle links von der Join-Klausel zurück.
Der LEFT OUTER JOIN würde alle Datensätze aus der linken Tabelle und nur die Datensätze aus der rechten Tabelle zurückgeben, die sich mit der rechten Tabelle überschneiden
Hier ist das Beispiel von Oracle Left Outer Join
Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;
Oracle Join-Syntax (+) :In der Oracle-Datenbank können wir auch die Pluszeichen-Syntax für Left Outer Join verwenden. In diesem Fall steht Plus Join auf der rechten Seite der Gleichung.
Example:
select empno,ename,emp.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+) ;
Right Outer Join
gibt die übereinstimmenden Zeilen aus beiden Tabellen sowie die nicht übereinstimmenden Zeilen aus der Tabelle rechts von der Join-Klausel zurück.
Hier ist das Beispiel für Oracle Right Outer Join
Example:
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
Oracle Join-Syntax (+) :In der Oracle-Datenbank können wir auch die Pluszeichen-Syntax für RIGHT OUTER JOIN verwenden. In diesem Fall wird ein rechter Join angezeigt, wenn sich das Pluszeichen links von der Gleichung befindet.
Example:
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno ;
Vollständiger äußerer Join
Dieser Join-Typ gibt alle Zeilen aus der LEFT-Hand-Tabelle und der RIGHT-Hand-Tabelle mit Nullen an der Stelle zurück, an der die Join-Bedingung nicht erfüllt ist
Hier ist das Beispiel für Oracle Full Outer Join
select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;
Diese Abfrage gibt alle Zeilen aus beiden Tabellen zurück. Die Verwendung der Oracle-Syntax mit E.DEPT_ID (+) =D.DEPT_ID (+) ist nicht möglich, da das (+)-Zeichen nur auf eine Tabelle verweisen darf. Wir müssen Union verwenden, um dasselbe mit dem +-Zeichen zu erreichen
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+)
union
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno;
Einige RDBMS unterstützen die Full Outer Join-Klausel nicht, dann können wir unten verwenden, um dies abzudecken
select empno,ename,dept.deptno,dname
from emp
left OUTER JOIN dept
on emp.deptno=dept.deptno
union
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
NATÜRLICHER JOIN
Der natürliche Join gibt an, dass der Join alle Spalten mit denselben Namen in den beiden Tabellen verknüpft.
Im Grunde vergleicht es die gemeinsamen Spalten beider Tabellen miteinander. Man sollte prüfen, ob es in beiden Tabellen gemeinsame Spalten gibt, bevor man einen natürlichen Join durchführt.
Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME FROM EMP NATURAL JOIN DEPT;
Hier ist dept_id dieselbe Spalte zwischen den Tabellen emp und dept
Natürlicher Join kann mehr als zwei Tabellen verbinden
Ich hoffe, Ihnen gefällt dieser Beitrag zu Oracle-Joins mit Beispielen.
Verwandte Artikel
Oracle SQL-Anleitung
Oracle Sql-Unterabfragen
Oracle Set-Operatoren
Oracle-Ansicht
wie man SQL-Abfragen schreibt
Auto-Increment-Spalte – Sequenz
Kreuzverknüpfung in Oracle
selbst mit Beispielen in Orakel eintreten
Oracle-Join-Syntaxbeispiele
Hash-Join in Oracle