728x90
SQL 학습: 실습 및 프로젝트
SQL을 학습하는 가장 좋은 방법은 다양한 실습 문제를 풀고 실제 프로젝트를 수행하는 것입니다. 이번 글에서는 실습 문제 풀이와 데이터셋을 활용한 쿼리 작성 연습, 그리고 간단한 데이터베이스 프로젝트 수행을 통해 SQL 실력을 향상시키는 방법에 대해 알아보겠습니다.
9.1 실습
다양한 실습 문제 풀이
SQL 실력을 향상시키기 위해 다양한 실습 문제를 풀어보는 것이 중요합니다. 여기 몇 가지 실습 문제를 소개합니다.
- 기본 데이터 조회
- employees 테이블에서 모든 직원의 이름과 이메일을 조회하세요.
[sql]SELECT first_name, last_name, email FROM employees; - 조건부 데이터 조회
- employees 테이블에서 부서 ID가 10인 직원의 이름과 급여를 조회하세요.
[sql]SELECT first_name, last_name, salary FROM employees WHERE department_id = 10; - 데이터 삽입
- employees 테이블에 새로운 직원을 삽입하세요.
[sql]INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, department_id, salary) VALUES (101, 'Alice', 'Smith', 'alice.smith@example.com', '2023-01-01', 10, 60000); - 데이터 업데이트
- employees 테이블에서 employee_id가 101인 직원의 급여를 10% 인상하세요.
[sql]UPDATE employees SET salary = salary * 1.1 WHERE employee_id = 101; - 데이터 삭제
- employees 테이블에서 employee_id가 101인 직원을 삭제하세요.
[sql]DELETE FROM employees WHERE employee_id = 101;
데이터셋을 활용한 쿼리 작성 연습
실제 데이터셋을 활용하여 쿼리 작성 연습을 할 수 있습니다. Kaggle, Google Dataset Search 등에서 다양한 데이터셋을 다운로드할 수 있습니다.
- 데이터셋 준비
- 예시: Kaggle의 "Employee Database" 데이터셋을 다운로드하여 데이터베이스에 로드합니다.
- 쿼리 작성 연습
- 각 부서의 평균 급여를 계산하세요.
[sql]
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
FROM employees
GROUP BY department_id;
- 부서별 직원 수를 계산하세요.
[sql]
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
FROM employees
GROUP BY department_id;
- 최근 6개월 동안 고용된 직원의 이름과 고용 날짜를 조회하세요.
[sql]
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH);
FROM employees
WHERE hire_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH);
9.2 프로젝트
SQL 실력을 실전에서 활용하기 위해 간단한 데이터베이스 프로젝트를 수행해보세요. 여기 몇 가지 프로젝트 아이디어를 소개합니다.
프로젝트 1 : 도서 관리 시스템
- 데이터베이스 설계
- books 테이블: 책의 정보(제목, 저자, 출판사, 출판일, ISBN 등)를 저장합니다.
- members 테이블: 회원의 정보(이름, 이메일, 가입일 등)를 저장합니다.
- borrowings 테이블: 대출 기록(책 ID, 회원 ID, 대출일, 반납일 등)을 저장합니다.
- 데이터베이스 구축
- 위의 테이블을 생성하고 예시 데이터를 삽입합니다.
- 쿼리 작성
- 특정 회원이 대출한 책 목록을 조회합니다.
[sql]SELECT b.title, b.author, br.borrow_date
FROM borrowings br
JOIN books b ON br.book_id = b.book_id
WHERE br.member_id = 1; - 현재 대출 중인 책 목록을 조회합니다.
[sql]SELECT b.title, b.author, m.name
FROM borrowings br
JOIN books b ON br.book_id = b.book_id
JOIN members m ON br.member_id = m.member_id
WHERE br.return_date IS NULL; - 특정 날짜 이후에 출판된 책 목록을 조회합니다.
[sql]SELECT title, author, publisher, publish_date
FROM books
WHERE publish_date > '2022-01-01';
- 특정 회원이 대출한 책 목록을 조회합니다.
프로젝트 2: 온라인 쇼핑몰 데이터베이스
- 데이터베이스 설계
- products 테이블 : 상품의 정보(이름, 설명, 가격, 재고 등)를 저장합니다.
- customers 테이블 : 고객의 정보(이름, 이메일, 주소 등)를 저장합니다.
- orders 테이블 : 주문 기록(주문 ID, 고객 ID, 주문 날짜, 총액 등)을 저장합니다.
- order_items 테이블 : 주문 항목(주문 ID, 상품 ID, 수량, 가격 등)을 저장합니다.
- 데이터베이스 구축
- 위의 테이블을 생성하고 예시 데이터를 삽입합니다.
- 쿼리 작성
- 특정 고객의 주문 내역을 조회합니다.
[sql]SELECT o.order_id, o.order_date, p.name, oi.quantity, oi.price
FROM orders o
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE o.customer_id = 1; - 인기 상품 상위 5개를 조회합니다.
[sql]SELECT p.name, SUM(oi.quantity) AS total_quantity
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id
GROUP BY p.product_id
ORDER BY total_quantity DESC
LIMIT 5; - 특정 기간 동안의 총 매출을 계산합니다.
[sql]SELECT SUM(total_amount) AS total_sales
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-06-30';
- 특정 고객의 주문 내역을 조회합니다.
이 글에서는 SQL 실습과 프로젝트를 통해 SQL 실력을 향상시키는 방법에 대해 알아보았습니다. 다양한 실습 문제를 풀어보고 실제 데이터셋을 활용하여 쿼리 작성 연습을 하며, 간단한 데이터베이스 프로젝트를 수행하여 실전 경험을 쌓아보세요. 이러한 과정을 통해 SQL에 대한 깊은 이해와 실력을 갖출 수 있습니다. Happy Coding!
728x90
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 10. SQL의 "학습 자료 및 커뮤니티 참여" (2) | 2024.07.14 |
---|---|
[SQL] 8. SQL의 "고급 주제" (0) | 2024.07.13 |
[SQL] 7. SQL의 "인덱스와 성능 최적화" (1) | 2024.07.13 |
[SQL] 6. SQL의 "데이터베이스 설계 및 정규화" (1) | 2024.07.13 |
[SQL] 5. SQL의 "데이터 제어 언어 (DCL)" (0) | 2024.07.12 |