SQL 코테 풀다가 JOIN문 이해가 부족한 거 같아 다시 학습하고 정리해 보았다!
강의: 유튜브 생활코딩, 참고 자료 및 사이트
https://www.youtube.com/watch?v=2Xa54XBXbk0&list=PLuHgQVnccGMAG1O1BRZCT3wkD_aPmPylq
https://github.com/egoing/sql-join/blob/master/dump.sql
https://sql-joins.leopard.in.ua/
JOIN
JOIN: 여러개의 분산된 테이블을 묶어서 하나의 테이블로 만든다.
하나의 테이블은 하나의 '주제'만 가져야 한다.
LEFT JOIN(LEFT OUTER JOIN)
- 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환한다.
- 일치하는 행이 없는 경우에도 왼쪽 테이블의 행은 반환된다.
실습 1.
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid;
NULL: 왼쪽에는 값이 있지만, 오른쪽테이블에는 그 값과 일치하는 값이 없음을 뜻함
실습 2.
SELECT * FROM topic
LEFT JOIN author ON topic.author_id = author.aid
LEFT JOIN profile ON author.profile_id = profile.pid;
필요한 컬럼만 나오게 하거나 WHERE을 사용해서 조건 지정 가능
RIGHT JOIN도 방향만 반대일 뿐 동일
INNER JOIN
- 가장 일반적인 JOIN 유형 중 하나이다(성능이 좋다).
- 두 테이블 간에 일치하는 행만 반환한다.
실습 3.
FULL OUTER JOIN
- 왼쪽 테이블과 오른쪽 테이블의 모든 행을 반환한다.
- 일치하는 행이 없는 경우에도 양쪽 테이블의 행은 반환된다
많은 RDBMS에서 FULL OUTER JOIN을 지원하지 않지만 LEFT JOIN + RIGHT JOIN을 해서 중복된 결과를 지움(UNION)으로써 동일한 결과를 가져 올 수 있다.
CROSS JOIN
- 두 테이블 간의 모든 가능한 조합을 반환한다.
SELECT *
FROM table1
CROSS JOIN table2;
SELF JOIN
- 동일한 테이블 내에서 JOIN을 수행합니다.
SELECT *
FROM table1 t1
INNER JOIN table1 t2 ON t1.column = t2.column;
'SQL > SQL 정리' 카테고리의 다른 글
[MySQL] 실무에서 많이 쓰는 SQL 기초 쿼리 정리_1, 2, 3(주석 처리, 시간 함수, 테이블 생성, 삭제, JOIN) (1) | 2024.06.23 |
---|---|
[MySQL] MySQL에서 Excel 파일 가져오기(Unhandled exception cp949 codec can't decode 오류) (2) | 2024.05.31 |
SQL 서브쿼리 정리(중첩 서브쿼리, 인라인 뷰, 스칼라 서브쿼리) (1) | 2024.02.09 |