Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was sind Oracle-Joins (SQL-Joins)?

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