Database/Mysql / / 2024. 9. 11. 10:41

데이터베이스 조인(SQL JOIN) 한눈에 보기: INNER, LEFT, RIGHT OUTER

📚 INNER JOIN 쉽게 이해하기

 

🔍 INNER JOIN이란?

 

INNER JOIN은 두 테이블에서 공통된 데이터를 가져오는 방식이야. 조인 조건을 만족하는 두 테이블의 데이터만 결과에 포함돼. 조인 조건을 만족하지 않는 데이터는 결과에서 제외되기 때문에, 두 테이블의 교집합처럼 동작한다고 생각하면 돼.

 

🏫 학생과 도서 대출 기록 예시로 설명

 

테이블 구조:

 

학생 테이블(student): 학생들의 정보를 담고 있음 (학생 ID, 이름 등).

도서 대출 기록 테이블(book): 책을 빌린 기록을 담고 있음 (대출한 책의 정보, 대출 날짜, 학생 ID).

 

INNER JOIN을 적용한 경우:

 

학생이 책을 빌린 경우에만 그 학생의 정보와 대출 기록이 결과에 포함돼. 즉, 학생 정보와 대출 기록이 모두 있는 경우만 결과로 나타나고, 학생이 책을 빌리지 않았다면 그 학생의 정보는 결과에 포함되지 않아.

 

✅ INNER JOIN 쿼리 예시:

SELECT student.name, book.loan_date
FROM student
INNER JOIN book ON student.id = book.student_id;

 

🧑‍🏫 결과 해석:

 

이 쿼리는 학생 테이블과 도서 대출 기록 테이블에서 **조인 조건(student.id = book.student_id)**을 만족하는 데이터만 결과에 포함시킴.

즉, 책을 빌린 학생들의 정보와 그 대출 기록만 결과로 보여줘.

책을 빌리지 않은 학생은 결과에서 제외돼.

 

🎯 INNER JOIN의 핵심 포인트

 

1. 교집합 역할: 두 테이블 간의 공통된 데이터만 결과에 포함됨.

2. 조인 조건이 중요: 조건을 만족하는 데이터만 반환되므로, 조건이 맞지 않으면 결과에서 제외됨.

3. 효율적인 데이터 추출: 조인 조건을 만족하는 데이터만 가져오기 때문에, 불필요한 데이터는 제외하고 필요한 데이터만 추출 가능.

 

🏫 INNER JOIN과 OUTER JOIN의 차이점

 

INNER JOIN: 양쪽 테이블에서 공통된 데이터만 가져옴. 조건을 만족하지 않는 데이터는 결과에 포함되지 않음.

LEFT OUTER JOIN: 왼쪽 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에서 일치하는 데이터가 없는 경우 NULL로 표시됨.

RIGHT OUTER JOIN: 오른쪽 테이블의 모든 데이터를 가져오고, 왼쪽 테이블에서 일치하는 데이터가 없는 경우 NULL로 표시됨.

 

🔗 INNER JOIN의 장점

 

명확한 데이터 추출: 필요한 데이터만 가져오므로, 성능 최적화와 결과의 명확성을 높임.

조인 조건에 따른 정확한 결과: 테이블 간의 관계를 명확히 하여, 불필요한 데이터는 걸러내고, 조건을 만족하는 데이터만 반환.

 

📚 RIGHT OUTER JOIN 쉽게 이해하기

 

🔍 RIGHT OUTER JOIN이란?

 

RIGHT OUTER JOIN은 두 개의 테이블을 조인할 때 오른쪽 테이블의 모든 데이터를 결과에 포함시키는 방식이야. 오른쪽 테이블에서 일치하는 데이터는 그대로 출력되고, 왼쪽 테이블에서 일치하지 않는 데이터는 **NULL**로 표시돼.

 

🏫 책 대출 기록 예시로 설명

 

테이블 구조:

 

학생 테이블(student): 학생들의 정보를 담고 있음 (학생 ID, 이름 등).

도서 대출 기록 테이블(book): 책을 빌린 기록을 담고 있음 (대출한 책의 정보, 대출 날짜, 학생 ID).

 

RIGHT OUTER JOIN을 적용한 경우:

 

책을 빌린 기록을 모두 가져오고, 학생 테이블에 해당 학생 정보가 없는 경우, 학생의 이름은 NULL로 표시돼. 즉, 대출 기록이 있는 모든 데이터는 결과에 포함되며, 대출 기록에 해당하는 학생 정보가 없다면, 그 부분은 NULL로 채워진다는 뜻이야.

 

✅ RIGHT OUTER JOIN 쿼리 예시:

SELECT student.name, book.loan_date
FROM student
RIGHT OUTER JOIN book ON student.id = book.student_id;

 

🧑‍🏫 결과 해석:

 

이 쿼리는 도서 대출 기록에 있는 모든 데이터를 가져오고, 해당 대출 기록에 맞는 학생 정보를 왼쪽 테이블에서 가져와.

만약 어떤 책이 대출되었지만 그 대출자의 정보가 학생 테이블에 없으면, 그 학생의 정보는 NULL로 출력돼.

 

🏫 LEFT OUTER JOIN과의 차이점

 

LEFT OUTER JOIN: **왼쪽 테이블(학생 테이블)**의 모든 데이터를 기준으로 조인을 수행해. 만약 어떤 학생이 책을 빌리지 않았다면, 그 학생의 정보는 결과에 포함되고 **대출 정보는 NULL**로 표시됨.

RIGHT OUTER JOIN: **오른쪽 테이블(도서 대출 기록 테이블)**의 모든 데이터를 기준으로 조인을 수행해. 대출 기록은 모두 출력되고, 만약 학생 테이블에 해당 정보가 없으면, 그 학생 정보가 NULL로 출력됨.

 

✅ LEFT OUTER JOIN 쿼리 예시:

SELECT student.name, book.loan_date
FROM student
LEFT OUTER JOIN book ON student.id = book.student_id;

 

이 쿼리는 모든 학생 정보를 출력하고, 만약 학생이 책을 빌리지 않았다면 대출 정보는 NULL로 표시돼.

 

🎯 정리

 

RIGHT OUTER JOIN: 오른쪽 테이블을 기준으로 모든 데이터를 가져오고, 왼쪽 테이블에 일치하는 데이터가 없으면 NULL로 표시됨.

LEFT OUTER JOIN: 왼쪽 테이블을 기준으로 모든 데이터를 가져오고, 오른쪽 테이블에 일치하는 데이터가 없으면 NULL로 표시됨.

 

Tip💡

RDBMSRelational Database Management System의 약자야.

 

이 용어는 관계형 데이터베이스 관리 시스템을 의미하며, 데이터를 **테이블(관계형 구조)**로 저장하고 관리하는 시스템을 말해. RDBMS에서는 각 테이블이 서로 관계를 맺고 있으며, 이를 통해 데이터를 효율적으로 조회, 수정, 삭제할 수 있어. SQL(Structured Query Language)을 사용해 데이터를 관리하고, 테이블 간의 관계를 이용해 복잡한 쿼리 작업도 수행할 수 있어.

 

대표적인 RDBMS에는 MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server 등이 있어.

'Database > Mysql' 카테고리의 다른 글

MySQL 완벽 가이드: 기초부터 고급까지  (0) 2024.08.21
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유