[Oracle] SQL JOIN

q.esmeray·2024년 5월 21일
0

ORACLE DB

목록 보기
5/5

JOIN

여러개의 테이블을 결합시켜 원하는 데이터를 가져오는 것
SELECT 컬럼명1,컬럼명2,...
FROM 테이블명1,테이블명2
WHERE 조인조건;

JOIN의 종류

INNER JOIN

두 개 이상의 테이블 결합에서 일치하는 행만 반환한다.

OUTER JOIN

두 개 이상의 테이블 결합에서 일치하지 않는 행도 포함하여 반환한다.

  • LEFT JOIN
    왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환한다.
  • FULL JOIN
    두 테이블의 모든 행을 반환한다.
  • RIGHT JOIN
    오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환한다.

EQUI JOIN

WHERE절에 공통컬럼들이 동등연산자 (=)에 의해 결합되는 조인

예시

SELECT S.SNUM,S.SNAME,G.SUBJECT,G.SCORE
FROM STUDENT S,GRADE G
WHERE S.SNUM=G.SNUM;
  • SNUM(학번) SNAME(이름) SUBJECT(과목) SCORE(점수)
  • 각 테이블명은 STUDENT S 이렇게 뒤에 별명 짓기 가능
  • 공통컬럼이 학번이므로 S.SNUM=G.SNUM 이라는 조건으로 결합

USING
-> 몇 몇개의 컬럼을 지정하여 EQUI JOIN을 하고싶을 때 사용

SELECT *
FROM TABLE1
JOIN TABLE2
USING(EMP_ID)

NON-EQUI JOIN

  • 공통컬럼이 존재하지 않아도 결합되는 경우의 조인
  • 비교연산자에 의해 결합 가능
  • 3개이상의 테이블 조인시 AND로 묶어서 결합 가능

CROSS JOIN

  • 결합조건이 없는 경우의 조인 (실질적으로 거의 사용 X )

SELF JOIN

  • 참조해야 하는 컬럼이 자신의 테이블의 다른 컬럼인 경우 사용되는 조인
    이 경우, 똑같은 테이블을 E1,E2로 나눠서 참조한다.

예시

SELECT E1.EMPNO,E1.ENAME,E1.MGR,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR=E2.EMPNO;

결과

EMPNO ENAME            MGR ENAME

      7902  FORD             7566 JONES     
      7900  JAMES            7698 BLAKE     
      7844  TURNER           7698 BLAKE     
      7521  WARD             7698 BLAKE     
      7654  MARTIN           7698 BLAKE     
      7499  ALLEN            7698 BLAKE     
      7934  MILLER           7782 CLARK     
      7782  CLARK            7839 KING      
      7566  JONES            7839 KING      
      7698  BLAKE            7839 KING      
      7369  SMITH            7902 FORD   

NATURAL JOIN

A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우(데이터 내용이 완전히 동일한 것만 조인됨.) JOIN되는 방식

select tabe1.column, table2column
  from table1 NATURAL JOIN table2;

0개의 댓글