여러 테이블 데이터 조인 (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';
: 별칭을 사용할 때는 테이블명을 사용할 수 없음
'CS > 데이터베이스' 카테고리의 다른 글
[Oracle] 여러 테이블 데이터 조인 (OUTER JOIN) (0) | 2020.09.11 |
---|---|
[Oracle] 여러 테이블 데이터 조인 (NON EQUI JOIN) (0) | 2020.09.11 |
[Oracle] 출력 행 제한 (Simpe TOP-n Queries) (0) | 2020.09.11 |
[Oracle] 출력 행 제한 (ROWNUM) (0) | 2020.09.11 |
[Oracle] 데이터 분석 - 출력 결과 넘버링 (ROW_NUMBER) (0) | 2020.09.10 |