[SQLD]「2」(2.3) JOIN, STANDARD JOIN
「1」 데이터 모델링의 이해
> 「2」 SQL 기본 / 활용
「3」 관리 구문
1. SELECT 문
2. 다양한 함수
3. WHERE 절
4. GROUP BY 절, HAVING 절
5. ORDER BY 절
> 6. JOIN
> 7. STANDARD JOIN
6. JOIN
EQUI JOIN
⸰ Equal(=) 조건으로 JOIN
√. JOIN 되는 두 테이블에 모두 존재하는 칼럼일 경우, 칼럼명 앞에 테이블명 / ALIAS 명시
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ...
FROM 테이블명1 A,
테이블명2 B
WHERE A.공통칼럼명 = B.공통칼럼명;
Non EQUI JOIN
⸰ Equal(=) 조건이 아닌 다른 조건(BETWEEN, >, >=, <, <=)으로 JOIN
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ...
FROM 테이블명1 A,
테이블명2 B
WHERE A.칼럼명 BETWEEN B.칼럼명 AND B.칼럼명;
3개 이상 TABLE JOIN
⸰ 3개 이상의 테이블을 JOIN
√. EQUI JOIN과 Non EQUI JOIN은 하나의 쿼리에서 같이 사용 가능
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ..., C.칼럼명5, ...
FROM 테이블명1 A,
테이블명2 B,
테이블명3 C,
WHERE A.공통칼럼명 = B.공통칼럼명
AND B.칼럼명 BETWEEN C.칼럼명 AND C.칼럼명;
7. STANDARD JOIN
STANDARD JOIN
⸰ SQL 문법의 호환성 이슈로 정한 표준 JOIN 쿼리
⸰ ==ANSI JOIN
,표준 조인
INNER JOIN
⸰ JOIN 조건에 충족하는 데이터만 출력
⸰ ON 절을 사용하여 조건을 작성
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A INNER JOIN 테이블명2 B
ON A.공통칼럼명 = B.공통칼럼명;
OUTER JOIN
⸰ JOIN 조건에 맞지 않는 행들도 출력
√. 모든 행이 출력되는 테이블의 반대편 테이블 옆에 (+) 기호를 붙여 작성 가능 (좌변 or 우변 중 하나만 표기)
√. ON 절 조건으로 JOIN 후, 최종적으로 WHERE 절 조건에 의해 필터링되어 출력
-LEFT OUTER JOIN
: 왼쪽 테이블의 데이터는 무조건 출력
: 오른쪽 테이블의 JOIN 되는 데이터가 없으면 오른쪽 테이블의 칼럼값을 NULL 로 출력
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A LEFT OUTER JOIN 테이블명2 B
ON A.공통칼럼명 = B.공통칼럼명;
-RIGHT OUTER JOIN
: 오른쪽 테이블의 데이터는 무조건 출력
: 왼쪽 테이블의 JOIN 되는 데이터가 없으면 왼쪽 테이블의 칼럼값을 NULL 로 출력
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A RIGHT OUTER JOIN 테이블명2 B
ON A.공통칼럼명 = B.공통칼럼명;
-FULL OUTER JOIN
: 왼쪽, 오른쪽 테이블의 데이터가 모두 출력
: LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합 (중복값 제거)
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A FULL OUTER JOIN 테이블명2 B
ON A.공통칼럼명 = B.공통칼럼명;
NATURAL JOIN
⸰ 두 테이블에서 공통 칼럼에 모두 동일한 데이터를 가지고 있을 경우 JOIN
⸰ USING 절을 이용하여, 동일한 데이터를 가진 공통 칼럼중 원하는 칼럼만 비교하여 EQUI JOIN 처럼 사용 가능
√. SELECT 절에서 공통 칼럼 or USING 절로 정의된 칼럼 앞에 테이블명 / ALIAS 금지
√. ON 절 사용 불가
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A JOIN 테이블명2 B
USING (공통칼럼명1, 공통칼럼명2, ...);
CROSS JOIN
⸰ 두 테이블 사이에 JOIN 조건이 없는 경우, 모든 행을 조합하여 출력
⸰ ==Cartesian Product
√. CROSS JOIN 후 행들의 수는 테이블 A의 행의 개수 × 테이블 B의 행의 개수
SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
FROM 테이블명1 A CROSS JOIN 테이블명2 B;
유선배 SQLD 과외노트
'💠기타 > 자격증' 카테고리의 다른 글
[SQLD]「2」(2.5) ROLLUP/CUBE/GROUPING SETS/GROUPING (0) | 2024.06.20 |
---|---|
[SQLD]「2」(2.4) 서브쿼리, 뷰, 집합 연산자 (0) | 2024.06.19 |
[SQLD]「2」(2.2) WHERE 절, GROUP BY 절/HAVING 절, ORDER BY 절 (0) | 2024.06.17 |
[SQLD]「2」(2.1) SELECT 문, 다양한 함수 (0) | 2024.05.31 |
[SQLD]「1」(1.2) 정규화, 반정규화, 트랜잭션, NULL (0) | 2024.05.29 |