-
SQL JOIN(EQUI JOIN, NON-EQUI JOIN, OUTER JOIN)SQLD/SQL 기본과 활용 2020. 8. 24. 16:04
# JOIN의 기준이 되는 테이블은 JOIN 조건을 기술할때 나열되는 두 테이블중 뒤에 위치하는 테이블이다SQL> SELECT A.PLAYER_NAME, A.TEAM_ID B.TEAM_NAME FROM PLAYER A, TEAM B WHERE B.TEAM_ID = A.TEAM_ID; # A.TEAM_ID를 기준으로 B테이블과 비교하며 조인 # 실행결과 PLAYER_NAME TEAM_ID TEAM_NAME ----------------------------------------------- 고종수 K07 포항 문창수 K06 대구 이청용 K01 서울
1. EQUI JOIN
- 보통 'PK-FK' 관계로 이루어져, 조인조건이 '='로 성립하는 조인 (조인 칼럼이 1:1 맵핑이 가능한 경우)
SQL> SELECT A.PLAYER_NAME, A.TEAM_ID B.TEAM_NAME FROM PLAYER A, TEAM B WHERE B.TEAM_ID = A.TEAM_ID; # A.TEAM_ID를 기준으로 B테이블과 비교하며 조인 # 실행결과 PLAYER_NAME TEAM_ID TEAM_NAME ----------------------------------------------- 고종수 K07 포항 문창수 K06 대구 이청용 K01 서울
2. NON-EQUI JOIN
- 'PK-FK' 관계로 이루어져 있지 않으며, 조인조건이 '>, >=, <=, <, BETWEEN' 으로 기술되는 조인
SQL> SELECT A.ENAME, A.SAL, B.GRADE FROM EMP A, SALGR B WHERE A.SAL BETWEEN B.LOWSAL AND B.HIGHSAL # 실행결과 ENAME SAL GRADE ----------------------------------------------- 문성태 500 6 김그림 800 5 고종수 1500 2 이태환 1000 4
3. OUTER JOIN
- 바로 위의 예시에서 Brian 이 SALGR 테이블의 조건에 만족하지 않아 출력이 되지않음 (조인조건에 만족하지 않음)
- OUTER JOIN은 조인할 테이블이없어도 특정테이블의 모든 데이터를 표시하고 싶은 경우에 사용
- OUTER JOIN과 NON-EQUI JOIN의 동시사용에 대해선 테스트후 재업로드 예정
- Oracle 은 WHERE 절에 (+) 기호를 NULL출력대상에 기술
# 이 예시는 검증되지않음 SQL> SELECT A.ENAME, A.SAL, B.GRADE FROM EMP A, SALGR B WHERE A.SAL BETWEEN B.LOWSAL(+) AND B.HIGHSAL(+) # 실행결과 ENAME SAL GRADE ----------------------------------------------- 문성태 500 6 김그림 800 5 고종수 1500 2 이태환 1000 4 Brian 1750
728x90'SQLD > SQL 기본과 활용' 카테고리의 다른 글
다중 테이블 조인(ON 조건절, WHERE 절) (0) 2020.08.27 표준 조인(INNER JOIN, NATURAL JOIN,FROM 조건절, USING 조건절, ON 조건절) (0) 2020.08.27 SQL) GROUP BY 절, HAVING 절, ORDER BY절, SELECT 문장 실행 순서 (0) 2020.08.20 SQL) 집계함수 (0) 2020.08.20 SQL의 LIKE, IN, BETWEEN 연산자 및 연산자 우선순위 (0) 2020.08.20