⭐️ SQL의 JOIN이란?
JOIN은 두 개 이상의 테이블을 서로 연결하여 관련된 데이터를 조회할 때 사용하는 SQL 문법이다.
관계형 데이터베이스에서는 데이터가 여러 테이블로 분리되어 저장되기 때문에,
테이블간 필요한 정보를 얻기 위해선 JOIN이 필수다. -> 사용 이유 ‼️
JOIN은 기본적으로 공통 컬럼(키)을 기준으로 두 테이블을 합친다.
조인의 종류에 따라 데이터가 합쳐지는 방식이 달라지는데, 이번 글에선 INNER JOIN과 LEFT JOIN에 대해서 알아보겠다.
⭐️ INNER JOIN & LEFT JOIN
INNER JOIN : 양쪽 테이블 모두에 일치하는 값이 있는 경우에만 반환을한다.
-> 결과로는 교집합을 반환한다.
LEFT JOIN : 왼쪽 테이블의 모든 행 + 오른쪽 테이블의 일차하는 값을 반환 (없다면 NULL)
-> 결과로는 왼쪽 기준의 전체 데이터를 가져온다.
[ 예제 테이블 ]
-- 회원 테이블 (users)
CREATE TABLE users (
user_id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 주문 테이블 (orders)
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
product VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- 더미 데이터 삽입
INSERT INTO users VALUES (1, '홍길동'), (2, '김철수'), (3, '이영희');
INSERT INTO orders VALUES (101, 1, '노트북'), (102, 1, '마우스'), (103, 2, '키보드');
-------------------- 오라클인 경우 ----------------------------
-- 회원 테이블 (users)
CREATE TABLE users (
user_id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 주문 테이블 (orders)
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
product VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- 더미 데이터 삽입
INSERT INTO users VALUES (1, '홍길동');
INSERT INTO users VALUES (2, '김철수');
INSERT INTO users VALUES (3, '이영희');
INSERT INTO orders VALUES (101, 1, '노트북');
INSERT INTO orders VALUES (102, 1, '마우스');
INSERT INTO orders VALUES (103, 2, '키보드');
🔥 INNER JOIN
SELECT NAME, PRODUCT
FROM USERS u
INNER JOIN ORDERS o ON u.USER_ID = o.USER_ID;
INNER JOIN은 두 테이블 모두에서 USER_ID가 일치하는 데이터만 가져온다.
결과화면과 같이 아이디가 같은 NAME 컬럼과 PRODUCT컬럼을 출력하는것을 볼 수 있다.
이영희는 주문 내역이 없기때문에 뜨지않는다.
하지만 이영희도 띄우고 싶은 경우가 있을 것이다. 이때 이제 LEFT JOIN을 사용하는 것이다.
🔥 LEFT JOIN
SELECT NAME, PRODUCT
FROM USERS u
LEFT JOIN ORDERS o ON u.USER_ID = o.USER_ID;
LEFT JOIN은 왼쪽에 작성된 테이블(FROM 다음에 나온 테이블이 왼쪽임)인 USERS 테이블의
모든 데이터를 기준으로 조인하며, 일치하지 않는 ORDERS의 데이터는 NULL로 표시된다.
결과적으로 주문이 없는 사용자인 이영희도 나오게 되는 것이다.
'IT 지식 (기술면접 대비)' 카테고리의 다른 글
RDBMS란 (0) | 2025.05.08 |
---|---|
데이터베이스의 다양한 유형 관계 (2) | 2025.05.07 |
정규화(Normalization)란 (6) | 2025.04.30 |
Primary Key와 Foreign Key의 차이와 각각의 역할 (0) | 2025.04.29 |
SQL문 실행 순서 (4) | 2025.04.29 |