SQL

[SQL] SQL 고급 문법 이해하기 - IN, JOIN, 테이블 관계 활용

프론트 개발자 김현중 2025. 1. 9. 05:51
728x90

데이터베이스에서 더 복잡한 정보를 추출하고 여러 테이블의 데이터를 결합하기 위해서는 고급 SQL 문법의 이해가 필수적인데 IN 연산자부터 JOIN 유형까지 상세히 정리해보고자 한다.


IN 연산자 활용하기

IN 연산자는 여러 값들 중 하나와 일치하는지 확인할 때 사용한다.

WHERE 절에서 여러 OR 조건을 간단히 표현할 수 있다.

SELECT * FROM products 
WHERE category IN ('Electronics', 'Books', 'Games');

-- 서브쿼리와 함께 사용
SELECT * FROM orders 
WHERE customer_id IN (
    SELECT id FROM customers 
    WHERE country = 'Korea'
);

BETWEEN 연산자로 범위 지정하기

특정 범위의 값을 검색할 때 사용하며, 숫자뿐만 아니라 날짜에도 활용할 수 있다.

SELECT * FROM products 
WHERE price BETWEEN 1000 AND 5000;

SELECT * FROM orders 
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

별칭(Aliases) 사용하기

테이블이나 열에 임시 이름을 부여하여 쿼리를 더 읽기 쉽게 만들 수 있다.

SELECT 
    c.name AS customer_name,
    o.order_date AS purchase_date
FROM customers AS c
JOIN orders AS o ON c.id = o.customer_id;

JOIN의 이해와 활용

JOIN은 여러 테이블의 데이터를 결합하는 핵심적인 기능을 제공한다.


Inner JOIN

두 테이블에서 일치하는 레코드만 반환한다.

SELECT orders.id, customers.name 
FROM orders
INNER JOIN customers 
ON orders.customer_id = customers.id;

Left JOIN

왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환한다.

SELECT products.name, categories.category_name 
FROM products
LEFT JOIN categories 
ON products.category_id = categories.id;

Right JOIN

오른쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환한다.

SELECT employees.name, departments.dept_name 
FROM employees
RIGHT JOIN departments 
ON employees.dept_id = departments.id;

Cross JOIN

두 테이블의 모든 가능한 조합을 반환한다.

SELECT products.name, sizes.size 
FROM products
CROSS JOIN sizes;

SELF JOIN

같은 테이블을 자기 자신과 조인한다.

SELECT 
    e1.name AS employee,
    e2.name AS manager
FROM employees e1
LEFT JOIN employees e2 
ON e1.manager_id = e2.id;

 

🚨JOIN 사용시 주의사항 🚨

조인하는 테이블의 크기가 클수록 성능에 영향을 미치고, 불필요한 조인은 피하며 적절한 인덱스 사용이 중요하다!!!

728x90