08. 테이블 합치기
테이블 합치기 JOIN
두개의 테이블을 특정 값으로 연결시키는 것!
1. INNER JOIN
JOIN 의 기본 형태. JOIN만 적으면 자동으로 INNER JOIN으로 인식됨
두 테이블에 모두 있는 값만 선택해서 합쳐주는 것
SELECT 컬럼명
FROM 테이블명1
(INNER) JOIN 테이블명2
ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼
(연결할 값, 같은 값들이 있는 컬럼을 선택하는 것)
WHERE 조건식;
2. LEFT JOIN / RIGHT JOIN
1) LEFT JOIN
왼쪽 테이블에서 선택한 칼럼이 기준이 되어, 해당 값에 해당하는 자료들만 합쳐짐
왼쪽 테이블에 있는 기준값이 오른쪽 테이블에 없다면? NULL로 채워짐
왼쪽 테이블 값이 기준!
2) RIGHT JOIN
오른쪽 테이블에서 선택한 칼럼이 기준이 되어, 해당 값에 해당하는 자료들만 합쳐짐
오른쪽 테이블에 있는 기준값이 왼쪽 테이블에 없다면? NULL로 채워짐
오른쪽 테이블 값이 기준!
3) 작성방법
작성방법은 INNER 조인과 동일함. 대신 INNER 자리에 각각 RIGHT, LEFT 만 작성하면 됨
SELECT 컬럼명
FROM 테이블명1
RIGHT / LEFT JOIN 테이블명2
ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼
(연결할 값, 같은 값들이 있는 컬럼을 선택하는 것)
WHERE 조건식;
3. OUTER JOIN ▶ UNION
두 테이블에 있는 모든 값 합치기
mysql은 OUTER JOIN이 없음. 대신 LEFTJOIN과 RIGHT JOIN을 연결해서 사용.
SELECT 컬럼명
FROM 테이블명1
LEFT JOIN 테이블명2
ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼
UNION
SELECT 컬럼명
FROM 테이블명1
RIGHT JOIN 테이블명2
ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼 ;
4. CROSS JOIN
두 테이블에 있는 모든 값을 각각 합쳐 모든 가능한 조합을 생성함.
즉 첫번째 테이블에 있는 첫번째 로우에, 두번째 테이블에 있는 모든 로우가 한번씩 합쳐저서 1개의 로우가 두번쨰 테이블의 모든 수 만큼 늘어나게 됨. 해당 과정을 첫번째 테이블에 첫번쨰 로우부터 마지막 로우까지 반복하게 됨
결국 로우의 수는 첫번쨰 테이블의 로우 수 x 두번쨰 테이블의 로우 수 만큼 늘어나게 됨
기준열이 필요하지 않기 때문에 ON 절을 작성하지 않음
SELECT 컬럼명
FROM 테이블명1
CROSS JOIN 테이블명2 ;
5. SELF JOIN
같은 테이블에 있는 값 합치기.
현재 존재하는 칼럼과 값이 순서 그대로 x2. 로우는 그대로.
SELECT 컬럼명
FROM 테이블명1 AS 별명1
INNER JOIN 테이블명1 AS 별명2
ON 별명1.컬럼1 = 별명2.컬럼1
WHERE 조건식 ;
'패스트캠퍼스 데이터 분석 부트캠프' 카테고리의 다른 글
[SQL 기초 문법] 데이터 삭제, 수정, 제약조건 설정 (0) | 2024.04.11 |
---|---|
[SQL 기초 문법] 여러 테이블 한번에 다루기 (집합연산) (0) | 2024.04.10 |
[SQL 기초 문법] 데이터 그룹화하기, 규칙 만들기, GROUP BY, HAVING, IF, CASE, CREATE FUNCTION (0) | 2024.04.09 |
[SQL 기초 문법] 원하는 데이터 만들기 ORDER BY, RANK, 문자형 데이터 함수, 숫자형 데이터 함수, 날짜형 데이터 함수, FORMAT 함수 등 (0) | 2024.04.04 |
[SQL 기초 문법] 데이터 가져오기 SELECT, FROM, AS, LIMIT, WHERE, DISTINCT 등 (0) | 2024.04.04 |