Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- mssql
- mysql
- 리눅스
- SQL
- java
- rsync
- 명령어
- group by
- network
- 티스토리챌린지
- 차이점
- 자바
- 오블완
- PostgreSQL
- Javascript
- DBMS
- analytics4
- oracle
- top
- docker
- 트랜잭션
- API
- MongoDB
- JPA
- IntelliJ
- MariaDB
- Linux
- spring
- Python
Archives
- Today
- Total
hanker
SQL - 테이블 결합, 데이터 통합의 핵심 JOIN 알아보기 본문
반응형
데이터베이스에서 JOIN은 여러 테이블의 데이터를 결합하여 유의미한 정보를 추출할 때 사용된다.
JOIN에는 다양한 종류가 있으며, 각 데이터베이스에서 동일한 방식으로 동작한다.
이번 글에서는 JOIN의 종류와 SQL에서의 활용 방법을 알아보자!
1. INNER JOIN
INNER JOIN은 두 테이블 간의 공통된 값(조건)에 해당하는 데이터만 반환한다.
SELECT A.name, B.order_date
FROM customers A
INNER JOIN orders B ON A.customer_id = B.customer_id;
# 결과: customers와 orders 테이블에서 customer_id가 일치하는 데이터만 반환
2. LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN은 왼쪽 테이블의 모든 데이터를 반환하며, 오른쪽 테이블에 매칭되는 값이 없으면 NULL로 채워진다.
SELECT A.name, B.order_date
FROM customers A
LEFT JOIN orders B ON A.customer_id = B.customer_id;
# 결과: customers의 모든 데이터와, 매칭되지 않은 경우 NULL이 포함된 데이터가 반환
3. RIGHT JOIN (RIGHT OUTER JOIN)
RIGHT JOIN은 오른쪽 테이블의 모든 데이터를 반환하며, 왼쪽 테이블에 매칭되는 값이 없으면 NULL로 채워진다.
SELECT A.name, B.order_date
FROM customers A
RIGHT JOIN orders B ON A.customer_id = B.customer_id;
# 결과: orders 테이블의 모든 데이터와, 매칭되지 않은 경우 NULL이 포함된 데이터가 반환
4. FULL JOIN (FULL OUTER JOIN)
FULL JOIN은 두 테이블의 데이터를 모두 반환하며, 매칭되지 않는 값은 NULL로 채워진다.
참고: MySQL에서는 FULL OUTER JOIN을 지원하지 않는다. 대신 UNION을 사용해야 함
SELECT A.name, B.order_date
FROM customers A
FULL JOIN orders B ON A.customer_id = B.customer_id;
# Oracle, MSSQL, PostgreSQL
SELECT A.name, B.order_date
FROM customers A
LEFT JOIN orders B ON A.customer_id = B.customer_id
UNION
SELECT A.name, B.order_date
FROM customers A
RIGHT JOIN orders B ON A.customer_id = B.customer_id;
# MySQL
5. CROSS JOIN
CROSS JOIN은 두 테이블의 Cartesian Product(모든 조합)를 반환한다.
SELECT A.name, B.product_name
FROM customers A
CROSS JOIN products B;
#결과: customers 테이블의 각 행과 products 테이블의 각 행이 조합된 결과가 반환
6. SELF JOIN
SELF JOIN은 동일한 테이블을 두 번 참조하여 JOIN하는 방식이다.
SELECT A.employee_id, A.name, B.manager_id
FROM employees A
INNER JOIN employees B ON A.manager_id = B.employee_id;
# 결과: 같은 테이블에서 직원과 매니저의 관계를 나타낸다.
JOIN 종류 정리
JOIN 종류 | 설명 | NULL 처리 |
INNER JOIN | 두 테이블 간 공통된 값만 반환 | 없음 |
LEFT JOIN | 왼쪽 테이블의 모든 데이터 + 매칭된 데이터 | 오른쪽 테이블 값이 NULL 가능 |
RIGHT JOIN | 오른쪽 테이블의 모든 데이터 + 매칭된 데이터 | 왼쪽 테이블 값이 NULL 가능 |
FULL JOIN | 두 테이블의 모든 데이터 | 양쪽 값이 NULL 가능 |
CROSS JOIN | 모든 조합 반환 | 없음 |
SELF JOIN | 같은 테이블 간 JOIN | 없음 |
SQL의 JOIN은 데이터를 결합하는 데 필수적이다.
테이블 간의 관계와 데이터를 분석하는 목적에 맞게 JOIN을 선택하여 효율적인 쿼리를 작성할 수 있다.
반응형
'DATABASE > SQL' 카테고리의 다른 글
SQL - Window Functions 의 모든 것 (윈도우 함수) (1) | 2025.01.04 |
---|---|
SQL - 서브쿼리 사용법 (서브쿼리 활용 방법) (0) | 2025.01.03 |
SQL - SQL 각 데이터베이스 별 NULL 처리 방법 (MySQL / MSSQL / ORACLE / PostgreSQL) (0) | 2025.01.01 |
SQL - 각 데이터베이스 별 데이터 타입 변환 방법 (MySQL / MSSQL / ORACLE / PostgreSQL), CAST와 CONVERT 사용법 (0) | 2024.12.31 |
SQL - 데이터 중복 제거하기! (MySQL / MSSQL / Oracle / PostgreSQL) (0) | 2024.12.10 |