본문 바로가기
CS/데이터베이스

[Oracle] 여러 테이블 데이터 조인 (EQUI JOIN)

by 김크롱 2020. 9. 11.

여러 테이블 데이터 조인 (EQUI JOIN)

: 서로 다른 테이블에 있는 컬럼을 하나의 결과로 출력함

- 조인 조건이 '=' 인 조인

 

 

기본형

SELECT column1, column2
    FROM tablename1, tablename2
    WHERE tablename1.column3 = tablename2.column3;

: 각 테이블의 column3가 같을 때 column1, column2를 조인함

- column1, column2가 각각 서로 다른 행에 있을 때 FROM절에 각 두 테이블을 모두 써야함

- column3가 두 테이블 모두에 존재할 때, 두 테이블의 연결고리로 사용

 

 

SELECT column1, column2
    FROM tablename1, tablename2;

: WHERE절(조인조건)을 사용하지 않으면 column1, column2의 두 테이블의 모두 조인되어 출력

 

 

 

조인조건과 검색조건

- 조인조건 : 두 테이블을 조인하기 위한 조건

- 검색조건 : 특정 데이터만 제한해서 출력하기 위한 조건

SELECT column1, column2, column3
    FROM tablename1, tablename2
    WHERE tablename1.column4 = tablename2.column4 and tablename1.column3='KOREA';

: column4가 두 테이블에서 동일하고 tablename1의 column3가 'KOREA' 일 때, column1, column2, column3를 출력 조인 출력

 

 

 

오류

SELECT column1, column2, column3, column4
    FROM tablename1, tablename2
    WHERE tablename1.column4 = tablename2.column4 and tablename1.column3='KOREA';

: column4에서 오류 발생. 두 테이블에서 모두 존재하기 때문에 어떤 테이블의 column4를 출력해야할지 몰라 발생하는 에러

 

 

오류해결

- 접두어 사용

SELECT column1, column2, column3, tablename1.column4
    FROM tablename1, tablename2
    WHERE tablename1.column4 = tablename2.column4 and tablename1.column3='KOREA';

: 두 테이블에 모두 존재하는 컬럼의 경우 접두어로 테이블 이름을 붙여줌.

 

 

권장

- 각각의 테이블에만 존재하는 컬럼의 경우에도 검색 속도 향상을 위해 접두어로 테이블명을 붙이는 것이 좋음

SELECT tablename1.column1, tablename2.column2, tablename1.column3
    FROM tablename1, tablename2
    WHERE tablename1.column4 = tablename2.column4 and tablename1.column3='KOREA';

- 테이블 별칭 사용

SELECT t1.column1, t2.column2, t1.column3
    FROM tablename1 t1, tablename2 t2
    WHERE t1.column4 = t2.column4 and t1.column3='KOREA';

: 별칭을 사용할 때는 테이블명을 사용할 수 없음