MariaDB 서브쿼리 사용법

MariaDB 서브쿼리 사용법

MariaDB에서 서브쿼리를 사용하면 복잡한 쿼리를 구성하고 다양한 조건을 적용하여 데이터를 조회할 수 있습니다. 이 글에서는 기본 서브쿼리 사용법, WHERE 절에서의 서브쿼리, SELECT 절에서의 서브쿼리, FROM 절에서의 서브쿼리 사용법을 예제와 함께 알아봅니다.

기본 서브쿼리 사용법

서브쿼리는 다른 쿼리 내에서 실행되는 쿼리입니다. 일반적으로 소괄호 () 안에 작성됩니다.

SELECT *
FROM employees
WHERE department_id = (SELECT id FROM departments WHERE department_name = 'HR');

WHERE 절에서 서브쿼리 사용

WHERE 절에서 서브쿼리를 사용하여 조건을 만족하는 데이터를 조회할 수 있습니다.

SELECT name
FROM employees
WHERE department_id = (SELECT id FROM departments WHERE department_name = 'Engineering');

SELECT 절에서 서브쿼리 사용

SELECT 절에서 서브쿼리를 사용하여 추가 정보를 조회할 수 있습니다.

SELECT name, (SELECT department_name FROM departments WHERE id = e.department_id) AS department_name
FROM employees e;

FROM 절에서 서브쿼리 사용

FROM 절에서 서브쿼리를 사용하여 임시 테이블을 생성하고 이를 기반으로 데이터를 조회할 수 있습니다.

SELECT name, department_name
FROM (SELECT e.name, d.department_name
      FROM employees e
      JOIN departments d ON e.department_id = d.id) AS emp_dept;

테스트 테이블 및 샘플 데이터

예제를 테스트하기 위해 employeesdepartments 테이블을 생성하고 샘플 데이터를 삽입합니다.

테이블 생성

-- employees 테이블 생성
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    department_id INT
);

-- departments 테이블 생성
CREATE TABLE departments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    department_name VARCHAR(50)
);

샘플 데이터 삽입

-- 샘플 데이터 삽입
INSERT INTO employees (name, department_id) VALUES
('Alice', 1),
('Bob', 2),
('Charlie', NULL);

INSERT INTO departments (department_name) VALUES
('HR'),
('Engineering');

활용 예제

WHERE 절 서브쿼리 예제

SELECT name
FROM employees
WHERE department_id = (SELECT id FROM departments WHERE department_name = 'HR');

SELECT 절 서브쿼리 예제

SELECT name, (SELECT department_name FROM departments WHERE id = e.department_id) AS department_name
FROM employees e;
MariaDB WHERE 절, SELECT 절 서브쿼리 실행 결과 화면

FROM 절 서브쿼리 예제

SELECT name, department_name
FROM (SELECT e.name, d.department_name
      FROM employees e
      JOIN departments d ON e.department_id = d.id) AS emp_dept;
MariaDB FROM 절 서브쿼리 실행 결과 화면

참고할 만한 사이트

더 자세한 내용은 다음 사이트들을 참고하세요.

관련 이전 게시글

이 글이 도움이 되셨다면 공유 부탁 드립니다.

위로 스크롤