728x90
반응형
SMALL
1. 조인이란?
조인 (JOIN)은 여러 테이블의 데이터를 연결해서 하나의 결과를 만드는 SQL 작업이에요.
예를 들어, "학생 정보" 테이블과 "수업 정보" 테이블을 연결해서 "학생이 듣는 수업" 데이터를 가져올 때 사용해요.
2. 조인의 종류와 차이점
1) INNER JOIN (내부 조인)
- 공통된 데이터만 결과로 가져와요.
- 두 테이블에서 조건을 만족하는 교집합 데이터를 반환해요. 😊
2) LEFT JOIN (좌측 외부 조인)
- 왼쪽 테이블의 모든 데이터와, 조건에 맞는 오른쪽 테이블 데이터를 가져와요.
- 왼쪽 테이블에만 있는 데이터도 포함돼요. 😊
3) RIGHT JOIN (우측 외부 조인)
- 오른쪽 테이블의 모든 데이터와, 조건에 맞는 왼쪽 테이블 데이터를 가져와요.
- 오른쪽 테이블에만 있는 데이터도 포함돼요. 😊
4) FULL OUTER JOIN (전체 외부 조인)
- 두 테이블의 모든 데이터를 가져와요.
- 조건에 맞는 데이터는 조인되고, 조건에 없는 데이터는 NULL로 표시돼요. 😲
3. 간단한 예시 코드 (오라클 SQL)
테이블 준비
-- 학생 정보 테이블
CREATE TABLE Students (
StudentID NUMBER PRIMARY KEY,
Name VARCHAR2(50)
);
-- 수업 정보 테이블
CREATE TABLE Courses (
CourseID NUMBER PRIMARY KEY,
StudentID NUMBER, -- 학생 ID
CourseName VARCHAR2(50)
);
-- 데이터 삽입
INSERT INTO Students VALUES (1, 'Alice');
INSERT INTO Students VALUES (2, 'Bob');
INSERT INTO Students VALUES (3, 'Charlie');
INSERT INTO Courses VALUES (101, 1, 'Mathematics'); -- Alice의 수업
INSERT INTO Courses VALUES (102, 2, 'Physics'); -- Bob의 수업
INSERT INTO Courses VALUES (103, 4, 'Biology'); -- 학생 정보에 없는 수업
1) INNER JOIN 예제
-- INNER JOIN: 공통된 데이터 (학생이 수업에 등록된 경우만)
SELECT S.Name, C.CourseName
FROM Students S
INNER JOIN Courses C
ON S.StudentID = C.StudentID;
-- 결과:
-- Alice | Mathematics
-- Bob | Physics
💡 설명:
- Alice와 Bob은 공통 데이터로 조건에 맞아 결과에 포함. 😊
- Charlie와 Biology는 조건에 맞지 않아서 제외.
2) LEFT JOIN 예제
-- LEFT JOIN: 왼쪽 테이블의 모든 데이터 포함
SELECT S.Name, C.CourseName
FROM Students S
LEFT JOIN Courses C
ON S.StudentID = C.StudentID;
-- 결과:
-- Alice | Mathematics
-- Bob | Physics
-- Charlie | NULL
💡 설명:
- Charlie는 오른쪽 테이블에 데이터가 없지만, 왼쪽 테이블에 있으므로 결과에 포함되고, 수업 정보는 NULL로 표시. 😊
3) RIGHT JOIN 예제
-- RIGHT JOIN: 오른쪽 테이블의 모든 데이터 포함
SELECT S.Name, C.CourseName
FROM Students S
RIGHT JOIN Courses C
ON S.StudentID = C.StudentID;
-- 결과:
-- Alice | Mathematics
-- Bob | Physics
-- NULL | Biology
💡 설명:
- Biology는 오른쪽 테이블에 있지만, 학생 정보가 없어서 NULL로 표시. 😊
4) FULL OUTER JOIN 예제
-- FULL OUTER JOIN: 두 테이블의 모든 데이터 포함
SELECT S.Name, C.CourseName
FROM Students S
FULL OUTER JOIN Courses C
ON S.StudentID = C.StudentID;
-- 결과:
-- Alice | Mathematics
-- Bob | Physics
-- Charlie | NULL
-- NULL | Biology
💡 설명:
- 모든 데이터를 가져오며, 조인 조건이 없는 데이터는 NULL로 표시돼요. 😲
4. 조인 종류 요약 😊
조인 종류 | 설명 | 예시 |
---|---|---|
INNER JOIN | 두 테이블의 공통 데이터만 반환 | Alice와 Bob만 결과 포함 |
LEFT JOIN | 왼쪽 테이블의 모든 데이터 포함 (오른쪽은 조건에 맞는 것만) | Charlie 포함, 수업 정보는 NULL |
RIGHT JOIN | 오른쪽 테이블의 모든 데이터 포함 (왼쪽은 조건에 맞는 것만) | Biology 포함, 학생 정보는 NULL |
FULL OUTER JOIN | 두 테이블의 모든 데이터 포함 | 모든 데이터 포함, 조건 없는 곳은 NULL |
5. 동작 방식 설명
- INNER JOIN: 조건에 맞는 데이터만 가져와요.
- LEFT JOIN: 왼쪽 테이블의 데이터는 모두 가져오고, 오른쪽 테이블은 조건에 맞는 데이터만 가져와요.
- RIGHT JOIN: 오른쪽 테이블의 데이터는 모두 가져오고, 왼쪽 테이블은 조건에 맞는 데이터만 가져와요.
- FULL OUTER JOIN: 양쪽 테이블의 모든 데이터를 가져오며, 조건 없는 데이터는 NULL로 표시돼요. 😊
728x90
반응형
SMALL
'데이터베이스 > ORACLE' 카테고리의 다른 글
Oracle 자동 증가 컬럼: 시퀀스와 트리거로 구현하기 AUTO_INCREMENT (0) | 2024.12.20 |
---|---|
오라클 데이터 타입 총정리: 초보자를 위한 쉬운 가이드 (0) | 2024.12.20 |
Oracle 트랜잭션 관리 쉽게 이해하기: START TRANSACTION, COMMIT, ROLLBACK 활용법 (0) | 2024.12.20 |
SQL 초보자를 위한 WHERE CASE WHEN 사용법: Oracle vs 다른 DB (0) | 2024.12.20 |
Oracle ON DELETE CASCADE와 SET NULL: 외래 키 옵션 완벽 가이드 (0) | 2024.12.20 |