데이터베이스 및 간단한 CTE 설정
이 첫 번째 단계에서는 데이터베이스 환경을 설정하고 간단한 Common Table Expression(CTE) 을 정의합니다. CTE 는 WITH 절을 사용하여 정의되며 단일 쿼리 기간 동안만 존재하는 임시 뷰 역할을 합니다. 이를 통해 복잡한 쿼리를 더 쉽게 읽고 관리할 수 있습니다.
먼저 데스크톱에서 터미널을 엽니다.
root 사용자로 MySQL 서버에 연결합니다. 이 랩 환경에서는 비밀번호 없이 sudo를 사용하여 연결할 수 있습니다.
sudo mysql -u root
연결되면 MySQL 프롬프트 (mysql>) 가 표시됩니다. 이제 labex_db라는 데이터베이스를 생성하고 해당 데이터베이스로 전환합니다.
CREATE DATABASE IF NOT EXISTS labex_db;
USE labex_db;
다음으로 employees 테이블을 생성하고 샘플 데이터를 삽입합니다. 이 테이블은 직원의 부서 및 급여를 포함한 기본 정보를 저장합니다.
CREATE TABLE IF NOT EXISTS employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);
INSERT INTO employees (employee_id, first_name, last_name, department, salary) VALUES
(1, 'John', 'Doe', 'Sales', 60000.00),
(2, 'Jane', 'Smith', 'Marketing', 75000.00),
(3, 'Robert', 'Jones', 'Sales', 55000.00),
(4, 'Emily', 'Brown', 'IT', 90000.00),
(5, 'Michael', 'Davis', 'Marketing', 70000.00);
이제 테이블이 준비되었으므로 'Sales' 부서의 직원만 선택하는 간단한 CTE 를 정의해 보겠습니다.
WITH SalesEmployees AS (
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department = 'Sales'
)
SELECT * FROM SalesEmployees;
이 쿼리를 자세히 살펴보겠습니다.
WITH SalesEmployees AS (...): SalesEmployees라는 CTE 를 정의합니다.
- 괄호 안의 쿼리는
department가 'Sales'인 employees 테이블에서 직원을 선택합니다.
SELECT * FROM SalesEmployees;: 이는 임시 SalesEmployees 결과 집합에서 모든 데이터를 검색하는 기본 쿼리입니다.
Sales 부서의 직원만 나열하는 다음 출력이 표시되어야 합니다.
+-------------+------------+-----------+----------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+----------+
| 1 | John | Doe | 60000.00 |
| 3 | Robert | Jones | 55000.00 |
+-------------+------------+-----------+----------+
2 rows in set (0.00 sec)
이는 첫 번째 CTE 가 올바르게 작동함을 확인합니다. 다음 단계를 위해 MySQL 셸에 계속 머물러 주십시오.