[sql] SQL 데이터베이스에서 서브쿼리 사용하기.
SQL에서 서브쿼리(subquery)는 쿼리 안에 또 다른 쿼리를 포함하며, 외부 쿼리의 조건식으로 사용되는 쿼리를 말합니다. 서브쿼리는 주로 SELECT, INSERT, UPDATE, DELETE 문에서 사용됩니다.
서브쿼리의 종류
단일 행 서브쿼리
단일 행 서브쿼리는 결과로 단일 행을 반환합니다. 일반적으로 비교 연산자와 함께 사용되어 외부 쿼리의 조건식으로 활용됩니다.
예:
SELECT employee_name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
다중 행 서브쿼리
다중 행 서브쿼리는 결과로 여러 행을 반환합니다. 이러한 서브쿼리는 IN, ANY, ALL과 함께 사용되어 외부 쿼리의 조건식으로 활용됩니다.
예:
SELECT department_name
FROM departments
WHERE department_id IN (SELECT department_id FROM employees WHERE salary > 50000);
다중 열 서브쿼리
다중 열 서브쿼리는 결과로 여러 열을 반환합니다. 일반적으로 비교 연산자나 EXISTS와 함께 사용됩니다.
예:
SELECT *
FROM employees
WHERE (department_id, job_id) IN (SELECT department_id, job_id FROM job_history);
서브쿼리 사용 시 주의사항
- 서브쿼리의 실행 속도가 느릴 수 있으므로, 적절한 인덱스를 활용해야 합니다.
- 서브쿼리는 쿼리를 읽기 어렵게 만들 수 있으므로, 가능한 한 간결하게 작성하는 것이 좋습니다.
서브쿼리를 활용하여 데이터베이스를 유연하게 조작할 수 있지만, 과용은 오히려 쿼리의 가독성을 낮출 수 있습니다. 적절하게 사용하여 데이터베이스 쿼리를 효율적으로 작성해야 합니다.
참고 문헌: MySQL 공식 문서