본문 바로가기
DATABASE/Oracle

[DB] Table Join (Oracle)

by melll93 2023. 1. 9.

1. Table Join

  • 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법.
    일반적으로 테이블의 식별 값인 Primary Key와 테이블 간 공통 값인 Foreign Key 값을 사용하여 연결한다.

 

Table Join 의 4가지 종류

 

  • Inner Join

SELECT [컬럼명]
  FROM [테이블A] a,
       [테이블B] b
 WHERE a.조인키컬럼 = b.조인키컬럼
 ;

 

  • Left-Outer Join

SELECT [컬럼명]
  FROM [테이블A] a,
       [테이블B] b
 WHERE a.조인키컬럼 = b.조인키컬럼(+)
 ;

 

  • Right-Outer Join

SELECT [컬럼명]
  FROM [테이블A] a,
       [테이블B] b
 WHERE a.조인키컬럼(+) = b.조인키컬럼
 ;

 

  • Full-Outer Join

SELECT [컬럼명]
  FROM [테이블A] a
  FULL OUTER JOIN [테이블B] b
    ON a.조인키컬럼 = b.조인키컬럼
 ;

 

  • Self Join
    같은 테이블 내의 서로 다른 행을 조건으로 주고 싶다면, Self Join을 이용해 마치 서로 다른 테이블에서 가져온 듯 같은 테이블을 두 번 조회한다.
SELECT [컬럼명]
  FROM [테이블A] a1,
       [테이블A] a2
 WHERE a1.조인키컬럼1 = a2.조인키컬럼2
 ;

 

  • UNION / INTERSECT / MINUS

Union
(합집합)
두 테이블의 결합, 중복은 제거되고 반환 SELECT [컬럼명A] FROM [테이블A]
UNION
  SELECT [컬럼명B] FROM [테이블B] ;
Union ALL
(중복을 포함한 합집합)
두 테이블 결합, 중복은 제거되지 않고 반환 SELECT [컬럼명A] FROM [테이블A]
UNION ALL
  SELECT [컬럼명B] FROM [테이블B] ;
INTERSECT
(교집합)
두 열 집합 중 중복되는 행을 반환 SELECT [컬럼명A] FROM [테이블A]
INTERSECT
  SELECT [컬럼명B] FROM [테이블B] ;
MINUS
(차집합)
두번째 SELECT에 존재하지 않는 행을 반환 SELECT [컬럼명A] FROM [테이블A]
MINUS
  SELECT [컬럼명B] FROM [테이블B] ;
반응형

'DATABASE > Oracle' 카테고리의 다른 글

[DB] Cursor  (0) 2023.01.18
[DB] Function & Procedure & Trigger (Oracle)  (0) 2023.01.14
[DB] PL/SQL 기초 (Oracle)  (0) 2023.01.13
[DB] Optimizer & SQL 힌트문 (Oracle)  (1) 2023.01.05

댓글