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
'SQL' 카테고리의 다른 글
[SQL] 데이터 무결성을 위한 필수 요소 - 데이터베이스 제약조건 (0) | 2025.01.09 |
---|---|
[SQL] MySQL 데이터베이스 구조 설계하기 - 생성부터 삭제까지 (0) | 2025.01.09 |
[SQL] SQL 고급 기능 완전 정복 - UNION부터 CASE문까지 (0) | 2025.01.09 |
[SQL] 기본 명령어 마스터하기 - 데이터 조회부터 수정까지 (1) | 2025.01.09 |
[SQL] SQL 이해하기 (0) | 2025.01.09 |