여러 테이블에서 데이터를 결합하여 하나의 결과 세트로 반환할 때 사용
예제 테이블
- Patients 테이블:
patient_id name doctor_id department 1 John Doe 101 Cardiology 2 Jane Smith 102 General 3 Alice Lee 103 Orthopedics - Doctors 테이블:
doctor_id doctor_name specialization 101 Dr. Williams Cardiology 102 Dr. Brown General 104 Dr. Anderson Pediatrics
1. INNER JOIN : 두 테이블에서 일치하는 행을 반환
예시 코드 :
SELECT p.patient_id, p.name, d.doctor_name, d.specialization
FROM Patients p
INNER JOIN Doctors d ON p.doctor_id = d.doctor_id;
결과: Patients 테이블의 doctor_id와 Doctors 테이블의 doctor_id가 일치하는 행만 반환
Patients 테이블:
patient_id | name | doctor_id | department |
1 | John Doe | 101 | Cardiology |
2 | Jane Smith | 102 | General |
3 | Alice Lee | 103 | Orthopedics |
Doctors 테이블:
doctor_id | doctor_name | specialization |
101 | Dr. Williams | Cardiology |
102 | Dr. Brown | General |
104 | Dr. Anderson | Pediatrics |
결과 :
patient_id | name | doctor_name | specialization |
1 | John Doe | Dr. Williams | Cardiology |
2 | Jane Smith | Dr. Brown | General |
2.LEFT OUTER JOIN : 왼쪽 테이블의 모든 행과 일치하는 오른쪽 테이블의 행 반환, 일치하지 않는 행엔 NULL 반환
예시 코드 :
SELECT p.patient_id, p.name, d.doctor_name, d.specialization
FROM Patients p
LEFT OUTER JOIN Doctors d ON p.doctor_id = d.doctor_id;
결과: Patients 테이블의 모든 행과 일치하는 Doctors 테이블의 행을 반환하며, 일치하지 않는 경우 NULL을 반환합니다.
Patients 테이블 :
patient_id | name | doctor_id | department |
1 | John Doe | 101 | Cardiology |
2 | Jane Smith | 102 | General |
3 | Alice Lee | 103 | Orthopedics |
Doctors 테이블 :
doctor_id | doctor_name | specialization |
101 | Dr. Williams | Cardiology |
102 | Dr. Brown | General |
104 | Dr. Anderson | Pediatrics |
결과 :
patient_id | name | doctor_name | specialization |
1 | John Doe | Dr. Williams | Cardiology |
2 | Jane Smith | Dr. Brown | General |
3 | Alice Lee | NULL | NULL |
3.RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행과 일치하는 왼쪽 테이블의 행을 반환하고, 일치하지 않는 행은 NULL 반환
예시 코드 :
SELECT p.patient_id, p.name, d.doctor_name, d.specialization
FROM Patients p
RIGHT OUTER JOIN Doctors d ON p.doctor_id = d.doctor_id;
결과 : Doctors 테이블의 모든 행과 일치하는 Patients 테이블의 행을 반환하며, 일치하지 않는 경우 NULL을 반환
Patients 테이블 :
patient_id | name | doctor_id | department |
1 | John Doe | 101 | Cardiology |
2 | Jane Smith | 102 | General |
3 | Alice Lee | 103 | Orthopedics |
Doctors 테이블 :
doctor_id | doctor_name | specialization |
101 | Dr. Williams | Cardiology |
102 | Dr. Brown | General |
104 | Dr. Anderson | Pediatrics |
결과 :
patient_id | name | doctor_name | specialization |
1 | John Doe | Dr. Williams | Cardiology |
2 | Jane Smith | Dr. Brown | General |
NULL | NULL | Dr. Anderson | Pediatrics |
4.FULL OUTER JOIN : 두 테이블의 모든 행을 반환하고, 일치하지 않는 행은 NULL 로 표시
예시 코드 :
SELECT p.patient_id, p.name, d.doctor_name, d.specialization
FROM Patients p
FULL OUTER JOIN Doctors d ON p.doctor_id = d.doctor_id;
Patients 테이블 :
patient_id | name | doctor_id | department |
1 | John Doe | 101 | Cardiology |
2 | Jane Smith | 102 | General |
3 | Alice Lee | 103 | Orthopedics |
Doctors 테이블 :
doctor_id | doctor_name | specialization |
101 | Dr. Williams | Cardiology |
102 | Dr. Brown | General |
104 | Dr. Anderson | Pediatrics |
결과 :
patient_id | name | doctor_name | specialization |
1 | John Doe | Dr. Williams | Cardiology |
2 | Jane Smith | Dr. Brown | General |
3 | Alice Lee | NULL | NULL |
NULL | NULL | Dr. Anderson | Pediatrics |
5.CROSS JOIN : 두 테이블의 모든 가능한 조합을 반환
예시 코드 :
SELECT p.patient_id, p.name, d.doctor_name, d.specialization
FROM Patients p
CROSS JOIN Doctors d;
Patients 테이블 :
patient_id | name | doctor_id | department |
1 | John Doe | 101 | Cardiology |
2 | Jane Smith | 102 | General |
Doctors 테이블 :
doctor_id | doctor_name | specialization |
101 | Dr. Williams | Cardiology |
102 | Dr. Brown | General |
104 | Dr. Anderson | Pediatrics |
결과 : Patients와 Doctors 테이블의 각 행이 조합된 모든 경우의 수
patient_id | name | doctor_name | specialization |
1 | John Doe | Dr. Williams | Cardiology |
1 | John Doe | Dr. Brown | General |
1 | John Doe | Dr. Anderson | Pediatrics |
2 | Jane Smith | Dr. Williams | Cardiology |
2 | Jane Smith | Dr. Brown | General |
2 | Jane Smith | Dr. Anderson | Pediatrics |
'[프로그래밍] DataBase' 카테고리의 다른 글
[DATABASE] SQL 작성 순 (1) | 2024.11.14 |
---|---|
[DATABASE] SELF JOIN, UNION, GROUP BY (0) | 2024.11.12 |
[DATABASE] ORACLE 함수와 표현식 (0) | 2024.11.11 |
[DATABASE] ORACLE 연산자 (0) | 2024.11.11 |
[DATABASE] ORACLE SQL (3) | 2024.11.11 |