개발지식 먹는 하마 님의 블로그
SQL 문법 - 조인 본문
[ JOIN ]
여러 개의 테이블을 연결하여 데이터를 검색하는 방법이다.
필요한 데이터가 서로 다른 테이블에 있을 때 불러오기 위해서 사용한다.
조인에는 대표적으로 6개의 유형이 있다.
유형 | 이미지 | 설명 |
INNER | ![]() |
공통 컬럼의 값이 같은 경우를 추출한다. |
LEFT (OUTER) JOIN |
![]() |
왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출한다. WHERE 검색조건을 추가할 경우, 조인된 값에서 해당 조건에 맞는 결과만 출력된다. * WHERE B.key IS NULL을 했을 때, 차집합 형태의 결과가 나오는 이유 왼쪽 테이블의 모든 데이터가 들어가있기 때문에 A.key = B.key를 했을 때, B.key가 비어있는 데이터가 존재할 수 있다. ex) A.key : 1, 2, 5 / B.key : 1, 2, 3 일 때, 1, 2, 5가 조회되고 5의 B.key는 비어있다. 따라서 IS NULL로 비어있는 데이터만을 조회했기 때문에 차집합 형태의 결과가 나온다. |
RIGHT (OUTER) JOIN |
오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출한다. |
|
FULL (OUTER) JOIN |
![]() |
양쪽의 모든 데이터를 추출한다. |
CROSS JOIN | ![]() |
모든 데이터 조합을 추출한다. (공통된 데이터를 출력하는 것이 아니다!) CROSS JOIN의 결과 = A 테이블 행 개수 X B 테이블 행 개수 |
SELF JOIN | 자기 자신에게 별칭을 지정한 후 다시 조인한다. SELECT * FROM table1 A JOIN table1 B ON A.key = B.key; |
[ 집합 연산자 ]
여러 SELECT 문의 결과를 하나로 결합하기 위해 사용한다.
< 사용 조건 >
- SELECT 절의 컬럼 수가 동일해야한다.
- SELECT 절의 동일한 위치에 존재하는 컬럼의 데이터 타입이 상호 호환 가능해야 한다.
집합 연산자 | 설명 |
UNION | 합집합 (중복 X) 중복 행이 제거된 쿼리 결과를 반환한다. |
UNION ALL | 합집합 (중복 O) 중복 행이 제거되지 않은 쿼리 결과를 반환한다. |
INTERSECT | 교집합 두 쿼리 결과에 공통적으로 존재하는 결과를 반환한다. |
MINUS | 차집합 첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환한다. |
'MySQL' 카테고리의 다른 글
SQL - 피벗 테이블 (0) | 2025.01.17 |
---|---|
SQL 문법 - 서브쿼리, CTEs (0) | 2025.01.16 |
SQL 문법 - 조건 (0) | 2025.01.15 |
SQL 문법 - 문자열 (0) | 2025.01.15 |
MySQL 스타일 가이드 (0) | 2025.01.14 |