DB, SQL
MySQL JOIN
index.ys
2023. 10. 3. 19:54
JOIN
- 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
- 두개 이상의 테이블을 묶어서 조인 할 수도 있음
내부 조인
- 두 테이블을 연결할 때 가장 많이 사용됨
- 그냥 JOIN을 INNER JOIN을 의미함
1:N 관계
- 두개의 테이블을 조인하기 위해서는 일대다( One to Many)관계로 연결 되어야함
- 한쪽 테이블에는 1개의 값만 존재하지만 연결된 다른 테이블에는 여러개의 값이 존재할 수 있음
- EX) 회원 테이블의 회원정보는 각자의 고유한 회원의 정보를 담고있음 => 1 구매 테이블의 구매정보는 한명의 구매기록이 여러번 존재할 수 있기때문에 => N
- 기본키(PK)와 외래키(FK)관계로 맺어져 있음
문법
- 두개의 테이블에서 모두 존재하는 행을 반환함
SELECT 컬럼
FROM 첫번째 테이블
INNER JOIN 두번째 테이블
ON 조인될 조건;
외부 조인
LEFT JOIN
- 내부 조인과 다르게 한쪽에만 데이터가 있어도 결과를 출력함
- 오른쪽 테이블에 빈값 발생시 NULL로 컬럼을 채움
- LEFT OUTER JOIN (LEFT JOIN)은 왼쪽테이블의 내용은 모두 출력되어야함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;
RIGHT JOIN
- LEFT조인과 동일함, 오른쪽에 있는 테이블을 기준으로 테이블을 조인함
- RIGHT OUTER JOIN( RIGHT JOIN )은 오른쪽테이블의 내용은 모두 출력되어야함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;
FULL OUTER JOIN
- LEFT조인과 RIGHT 조인을 합친것
- 왼쪽 테이블이나 오른쪽 테이블 둘중 한 테이블에 존재하기만해도 데이터를 출력함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;
상호 조인
- CROSS JOIN은 한쪽테이블의 모든행과 다른 쪽 테이블의 모든행을 조인 시키는 조인
- 테이블1 행 갯수 X 테이블2 행 갯수 = 조인결과 행 갯수
- 상호 조인을 카티션 곱이라고도 함
- ON 구문을 사용할 수 없다
- 테스트용 데이터나 대용량 데이터를 생성할 떄 사용
SELECT *
FROM 테이블1
CROSS JOIN 테이블2;
자체 조인
- SELF JOIN은 자신이 자신과 조인하는 JOIN방법, 1개의 테이블만 사용함
- INNER JOIN과 문법이 똑같지만 1개의 테이블만 사용함
SELECT 컬럼
FROM 첫번째 테이블
INNER JOIN 첫번째 테이블
ON 조인될 조건;