▶ SQK 에서 서로 다른 곳에 있는 데이터를 결합하는 방법 : UNION(수직결합) & JOIN(수평결합)
<UNION>
· 사용 : 데이터가 다른 테이블에 있을 때 하나로 수직결합 하며 묶을 때
· 문법 : table A union table B
· 형식 : 두 테이블의 컬럼 순서가 같고, 데이터 형식이 같아야함
<UNION / UNION ALL>
· 공통점 : 두 쿼리문을 하나로 수직결합
· 주의점 : 열의 갯수와 순서가 모든 쿼리에서 동일 해야 함 / 데이터의 형식이 일치해야함
· 차이점 : UNION은 중복된 행을 하나로 표기하고 (중복제거하고 표기) = DISTINCT
UNION ALL 은 모두 표현(중복을 제거하지 않고 표기)
<JOIN>
순서
1) 공통컬럼(연결컬럼)을 먼저 찾기
공통컬럼 : 두 테이블에서 공통으로 존재하는 컬럼
2) 공통컬럼 관계 찾기 (PK 와 FK 찾기)
· PK(a.k.a 기본키) : NULL일 수 없고, 유일한 갑을 가짐.
모든 데이터를 식별하는 기준이 되는 컬럼이므로, 테이블 당 하나의 기본키만 가질 수 있다.
· FK(a.k.a 외래키) : 다른 테이블의 PK와 연결되어 테이블 간 관계를 나타내주는 컬럼.
기준이 되는 컬럼 (PK) 을 확인하기 위한 연결컬럼(FK)
· 공통컬럼의 컬럼명은 달라도 괜찮음. 데이터 내용이 동일하면 OK.
· 공통컬름은 ON절의 조건절이 되며 ,조건절은 1개가 아닐 수 있음
즉, on a.공통컬럼=b.공통컬럼 and a.공통컬럼2=b.공통컬럼2 가 될 수 있음
(아이디, 나이 두개를 기준으로 묶을 수 도 있으니까 !)
· 테이블 구조
1(기준) : 1(기준)
1(기준) : N(비교)
N(비교) : 1(기준)
N(비교) : N(비교) -> 기준테이블이 없으므로 데이터가 부풀려져 있어 리턴될수 있어 사용하지 않는 것 권장.
3) 적절한 조인방식 찾기
· INNER JOIN (가장많이 사용)
두테이블에서 일치하는 값을 가진 행을 출력 (교집합 개념)
· LETF JOIN (가장많이 사용)
왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환.
일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL값이 출력.
· RIGHT JOIN (거의 사용하지 않음)
오른쪽 테이블의 모든행과 왼쪽테이블의 일치하는 행을 반환.
일치하는 항목이 없으면, 왼쪽 테이블의 열에 대해 NULL값 출력.
· FULL OUTER JOIN (MYsql 환경에서는 제공하지 않음 )
모든 데이터를 보고싶을 때 사용
레프트조인 + 유니온 + 라이트 조인으로 계산해야 함 (합집합)
N:N 결합으로 용량이 커지고, 그에 따른 비용 이슈로 잘 사용하지 않음 (즉 , 데이터양이 뻥튀기되서 비싸다!)
'SQL > SQL 개념 정리' 카테고리의 다른 글
| [SQL] SUBQUERY와 자주 쓰이는 함수들 - IN, EXISTS, ANY, ALL (0) | 2024.05.28 |
|---|---|
| [SQL] SUBQUERY 함수 - 단일행, 다중행, 상관관계 서브쿼리 (0) | 2024.05.28 |
| [SQL] ROW_NUMBER(), RANK() & DENSE_RANK(), NTILE(), LAG() & LEAD(), FIRST_VALUE() & LAST_VALUE() / SUM() & AVG() & COUNT() 집계함수와의 조합 (0) | 2024.05.27 |
| [SQL - BASIC] WINDOW 함수 종류 (0) | 2024.05.27 |
| [SQL] WINDOW 함수 VS 집계 함수 (0) | 2024.05.27 |