안녕하세요!
이번 포스팅 에서는 Database 종류인 Mysql
에서 자주 사용 되는 JOIN
에 대한 종류와 특징, 간단한 예제에 대해 알아 보도록 하겠습니다!📕
면접을 볼 때마다 단골 질문 중 하나 였던 조인에 대해 정리해 보겠습니다.🤔
1. 조인(JOIN)이란?
- 조인 이란 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블 처럼 만들어서 결과를 보여주는 것
- 사용자가 원하는 2개의 테이블을 조합 하여 하나의 열로 표현 하는 것 입니다.
2. 조인(JOIN)의 종류
- SQL 여러 종류의 조인을 하나의 벤다이어그램 으로 나타 내면 위와 같습니다.
- INNER JOIN
- A와 B에 대해 수행하는 것은, A와 B의 교집합을 나타냅니다.
- 서로 연관된 내용만 검색하는 조인 방법 입니다.
-
벤다이어그램으로 그렸을 때 교차되는 부분 입니다.
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
- LEFT JOIN
- A의 모든 레코드와 B의 일치하는 레코드를 반환 합니다.
- B에 일치하는 레코드가 없으면 B에서는 결과가 NULL이 됩니다.
-
벤다이어그램으로 그렸을 때 왼쪽 A의 부분 입니다.
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
- RIGHT JOIN
- B의 모든 레코드와 A의 일치하는 레코드를 반환 합니다.
- A에 일치하는 레코드가 없으면 A에서는 결과가 NULL이 됩니다.
-
벤다이어그램으로 그렸을 때 오른쪽 B의 부분 입니다.
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
- OUTER JOIN
- A와 B에 대해 수행하는 것은, A와 B의 합집합을 나타냅니다.
- A와 B의 레코드에 일치하는 모든 레코드를 반환 합니다.
-
벤다이어그램으로 그렸을 때 합집합 부분 입니다.
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
- CROSS JOIN
- 모든 경우의 수, 즉 A의 row 개수X B 테이블 row 개수 만큼의 row를 가진 테이블이 출력 됩니다.
- 이 방식은 Cartesian Product, 곱집합 이라는 용어로 정의 되어 있습니다.
-
아래의 3가지 예제는 모두 같은 결과를 나타냅니다.
SELECT * FROM table1 CROSS JOIN table2; SELECT * FROM table1 JOIN table2; SELECT * FROM table1, table2;
- SELF JOIN
- 자기 자신과의 CROSS JOIN을 의미하고 보통 자기 자신과의 조합은 제거 합니다.
- 한 테이블 내의 row끼리 어떤 계산을 할 때 유용하게 쓰입니다.
-
동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 동일하기 때문에 식별을 위해 반드시 별칭(ALIAS)을 사용해야 합니다.
SELECT ALIAS_1.column_name, ALIAS_2.column_name, ... FROM table1 ALIAS_1, table2 ALIAS_2 WHERE ALIAS1.column_name = ALIAS_2.column_name;
3. 마치며
- 조인에 대한 내용을 다시 한번 정리 하며 대학교 때 배웠던 기억이 나네요..😋
- 여러 가지 종류의 조인이 있어서 외우기 힘들지만, 벤다이어 그램으로 기억 하는 방법도 좋은 것 같아요!👍🏻
오늘 준비한 내용은 여기까지 입니다.
이번 포스팅이 도움이 되셨거나 궁금한 점이 있으시다면 언제든지 댓글을 달아주세요!🙋🏻♀️✨