Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Co to są złącza Oracle (złącza SQL)?

Czasami trzeba wyświetlić dane z wielu tabel. Aby to wykonać, musisz połączyć jedną tabelę z inną tabelą.Istnieją różne sposoby, w jakie możemy uzyskać dane z wielu tabel.Tutaj skupiłbym się na złączach Oracle z przykładami.Jest to również ważne dla wszystkich złączeń Sql . Wyjaśniłbym sprzężenie wewnętrzne, sprzężenie zewnętrzne, sprzężenie krzyżowe, sprzężenie naturalne, sprzężenie kartezjańskie z przykładami

Łączenia Oracle

Wyrocznia łączy to zapytanie, które łączy wiersze z dwóch lub więcej tabel Oracle.

Oracle wykonuje łączenie, gdy w klauzuli FROM pojawia się wiele tabel. Aby połączyć dwie tabele, musisz zidentyfikować wspólne kolumny, które łączą te dwie tabele. W klauzuli WHERE definiujesz relacje między tabelami wymienionymi w klauzuli FROM.

Niektóre wytyczne dotyczące połączeń Oracle (połączeń SQL)

1) podczas pisania instrukcji select, która łączy tabele, dobrą praktyką jest poprzedzenie nazwy kolumny nazwą tabeli w celu zachowania przejrzystości.

2) Aby połączyć m tabel, potrzebujemy co najmniej m-1 warunków

3) Możemy użyć aliasu tabeli jako nazwy tabeli, jeśli nazwa tabeli jest długa. Tabela wygląda na krótszy kod, a co za tym idzie mniej pamięci

4)  Jeśli nie używasz nazwy_tabeli ani aliasu tabeli podczas wybierania kolumny i jeśli wiele tabel ma tę samą nazwę kolumny, należy określić nazwę_tabeli dla kolumny, która jest wspólna dla wszystkich tabel

Łączenie wewnętrzne

Najpopularniejszym operatorem używanym do powiązania dwóch tabel jest operator równości (=). Nazywa się to złączeniem równościowym lub equijoin . To proste połączenie znane również jako sprzężenie wewnętrzne

Przykład łączenia wewnętrznego Oracle

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;

Aby wykonać łączenie trzech lub więcej tabel, Oracle łączy dwie tabele na podstawie warunku złączenia, a następnie łączy wynik z inną tabelą na podstawie warunków złączenia i powtarza aż wszystkie tabele zostaną połączone.

Połączenia złożone

Dodaj jeden lub więcej warunków w klauzuli WHERE. Na przykład, jeśli interesują Cię wszystkie działy i ich lokalizacje poza Wielką Brytanią, użyj

SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';

Bez połączenia równorzędowego

Nie-equijoin to warunek złączenia inny niż operator równości.

Jest to instrukcja sprzężenia wewnętrznego, która wykorzystuje nierówną operację (np.:<>,>, <, =, BETWEEN itp.) w celu dopasowania wierszy z różnych tabel

SELECT e.ename, e.sal, s.grade
FROM  emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;

Produkty kartezjańskie lub łączenie kartezjańskie lub łączenie krzyżowe

-Złączenie kartezjańskie (lub produkt kartezjański) (lub Złączenie krzyżowe) występuje, gdy dane są wybrane z co najmniej dwóch tabel i zdefiniowany jest warunek złączenia lub nie zdefiniowano żadnej wspólnej relacji w klauzuli WHERE

-Jeżeli wykonywane jest łączenie i nie określono warunku łączenia, powstaje iloczyn kartezjański. Iloczyn kartezjański to zestaw wyników, który jest iloczynem sumy wierszy dwóch tabel. Jeśli tabela „P” ma 100 wierszy, a tabela „Q” ma 100 wierszy i opracowany jest iloczyn kartezjański, wynikowy zestaw wyników będzie miał 10000 wierszy. Jeśli zapytanie łączy trzy lub więcej tabel, optymalizator może znaleźć sposób na wybranie kolejności łączenia, która wyklucza produkt kartezjański, ale nie licz na to.

SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   cross join DEPT ;

Połączenia zewnętrzne

Sprzężenia wewnętrzne, które widzieliśmy, zwracają pasujące wiersze z dwóch lub więcej tabel zgodnie z warunkiem złączenia. Mechanizm zewnętrznego łączenia zwraca dane z jednej tabeli, nawet jeśli w łączącej tabeli nie ma odpowiedniego wiersza.

Istnieją trzy połączenia zewnętrzne

a) Łączenie lewe zewnętrzne lub Łączenie lewe

b) Prawe sprzężenie zewnętrzne lub Prawe sprzężenie

c) Pełne sprzężenie zewnętrzne lub pełne sprzężenie

Połączenie zewnętrzne lewe

zwraca pasujące wiersze z obu tabel, a także niedopasowane wiersze z tabeli po lewej stronie klauzuli join.

LEFT OUTER JOIN zwróci wszystkie rekordy z lewej tabeli i tylko te rekordy z prawej tabeli, które przecinają się z prawą tabelą

Oto przykład Oracle Left External Join

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

Składnia łączenia Oracle (+) :W bazie danych Oracle możemy również użyć składni znaku plusa dla lewego sprzężenia zewnętrznego. W tym przypadku sprzężenie plusa znajduje się po prawej stronie równania.

Example:
select empno,ename,emp.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+) ;

 

Prawe połączenie zewnętrzne

zwraca wiersze pasujące z obu tabel, a także niedopasowane wiersze z tabeli po prawej stronie klauzuli join.

Oto przykład połączenia zewnętrznego Oracle Right

Example:
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;

Składnia łączenia Oracle (+) :W bazie danych Oracle możemy również użyć składni znaku plus dla RIGHT OUTER JOIN. W tym przypadku prawe złącze jest wskazywane, gdy znak plusa znajduje się po lewej stronie równania.

Example:
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno ;

Pełne połączenie zewnętrzne

Ten typ złączenia zwraca wszystkie wiersze z tabeli LEWEJ i PRAWEJ z wartościami null w miejscu, w którym warunek złączenia nie jest spełniony

Oto przykład dla Oracle Full Outer Join

select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;

To zapytanie zwróci wszystkie wiersze z obu tabel. Użycie składni Oracle przy użyciu E.DEPT_ID (+) =D.DEPT_ID (+) jest niemożliwe, ponieważ znak (+) może odnosić się tylko do jednej tabeli. Musimy użyć Union, aby osiągnąć to samo za pomocą znaku +

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;

Niektóre RDBMS nie obsługują klauzuli Full external join, więc możemy to wykorzystać poniżej

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;


DOŁĄCZENIE NATURALNE

Złączenie naturalne określa, że ​​złączenie dotyczy wszystkich kolumn o tych samych nazwach w obu tabelach.

Zasadniczo porównuje ze sobą wspólne kolumny obu tabel. Przed wykonaniem połączenia naturalnego należy sprawdzić, czy w obu tabelach istnieją wspólne kolumny.

Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME  FROM EMP  NATURAL JOIN DEPT;

Tutaj dept_id to ta sama kolumna między tabelami emp i dept

Połączenie naturalne może dołączyć do więcej niż dwóch stołów

Mam nadzieję, że podoba Ci się ten post w Oracle dołącza do przykładów.

Powiązane artykuły
Samouczek Oracle SQL

Podzapytania Oracle SQL

Operatory zestawów Oracle

Widok Oracle

jak pisać zapytania sql

Kolumna automatycznego przyrostu — sekwencja

Połączenie krzyżowe w Oracle

dołącz do wyroczni z przykładami

przykłady składni sprzężenia Oracle

Hash Dołącz do Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie timera w Oracle Forms / Forms 6i i wyświetlanie zegara

  2. Jak mogę uzyskać wczesny dostęp do aktualizacji Oracle Java, abym mógł przetestować moją aplikację RIA i uniknąć prób ogniowych, gdy te aktualizacje zostaną upublicznione?

  3. Procedura składowana Java a procedura składowana PL/SQL

  4. Zrzucasz pola CLOB do plików?

  5. Jak sprawdzić, czy istnieje procedura składowana?