반응형
조인(JOIN)이란?

- 데이터베이스 조인(Join)은 두 개 이상의 테이블에서 관련된 데이터를 결합하여 하나의 결과 집합으로 만드는 작업이다.
- 조인은 관계형 데이터베이스에서 매우 중요한 기능으로, 데이터 간의 관계를 기반으로 유용한 정보를 추출하는 데 사용된다.
아래의 테이블을 예시로 쿼리와 함께 주요 조인 유형을 설명하겠다.
students 테이블

courses 테이블

내부 조인 (Inner Join)

내부 조인은 두 테이블에서 일치하는 데이터만 반환
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT students.name, courses.course_name FROM students INNER JOIN courses ON students.student_id = courses.student_id;

왼쪽 외부 조인 (Left Outer Join)

왼쪽 외부 조인은 왼쪽 테이블의 모든 데이터를 반환하고, 오른쪽 테이블에서 일치하는 데이터가 없는 경우 NULL을 반환
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT students.name, courses.course_name FROM students LEFT JOIN courses ON students.student_id = courses.student_id;

오른쪽 외부 조인 (Right Outer Join)

오른쪽 외부 조인은 오른쪽 테이블의 모든 데이터를 반환하고, 왼쪽 테이블에서 일치하는 데이터가 없는 경우 NULL을 반환
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT students.name, courses.course_name FROM students RIGHT JOIN courses ON students.student_id = courses.student_id;

전체 외부 조인 (Full Outer Join)

전체 외부 조인은 두 테이블의 모든 데이터를 반환하며, 일치하지 않는 데이터는 NULL을 반환
sql
닫기-- ANSI SQL, Oracle SELECT students.name, courses.course_name FROM students FULL OUTER JOIN courses ON students.student_id = courses.student_id; -- MySQL SELECT students.name, courses.course_name FROM students LEFT JOIN courses ON students.student_id = courses.student_id UNION SELECT students.name, courses.course_name FROM students RIGHT JOIN courses ON students.student_id = courses.student_id;
❗️MySQL에서는 Full Outer Join을 지원하지 않음. Left Join과 Right Join을 결합(UNION)하여 사용

교차 조인 (Cross Join)
교차 조인은 두 테이블의 모든 조합을 반환
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT students.name, courses.course_name FROM students CROSS JOIN courses;

자기 조인 (Self Join)
자기 조인은 동일한 테이블을 두 번 사용하여 조인한 것.
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT a.name AS student_name, b.name AS classmate_name FROM students a JOIN students b ON a.student_id <> b.student_id;

자연 조인(Natural Join)
두 테이블에서 동일한 이름을 가진 열을 자동으로 사용하여 조인
조인 조건을 명시적으로 지정할 필요가 없으므로, 동일한 이름의 열이 있는 경우 간편하게 사용할 수 있음
→ 명시하지 않아 사용 시 실수할 수도 있으니 테이블에 열 이름을 꼼꼼히 확인하자!
sql
닫기-- ANSI SQL, MySQL, Oracle SELECT name, course_name FROM students NATURAL JOIN courses;

728x90
반응형
'Computer Science > Database' 카테고리의 다른 글
SQL과 NoSQL (3) | 2024.11.24 |
---|---|
SQL injection 종류와 방지 (0) | 2024.11.23 |
트랜잭션(Transaction) & 트랜잭션 격리성 (0) | 2024.11.18 |
키(Key) (0) | 2024.11.11 |
Database와 DBMS (0) | 2024.11.11 |