SQL Exercises
SQL Exercises: 실습 문제 및 해설
다음은 SQL의 기본 문법을 학습할 수 있는 실습 문제들입니다. 각 문제는 데이터베이스 생성, 테이블 관리, 데이터 조회, 삽입, 수정, 삭제 등의 작업을 포함하며, SQL을 실무에 적용하는 능력을 향상시킬 수 있습니다.
1. 데이터베이스 생성 및 선택
문제: store
라는 이름의 데이터베이스를 생성하고, 해당 데이터베이스를 선택하세요.
-- 데이터베이스 생성
CREATE DATABASE store;
-- 데이터베이스 선택
USE store;
2. 테이블 생성
문제: products
라는 테이블을 생성하세요. 테이블은 다음과 같은 필드를 가집니다.
product_id
: INT, 자동 증가, 기본 키product_name
: VARCHAR(100), 제품 이름category
: VARCHAR(50), 카테고리price
: DECIMAL(10, 2), 제품 가격stock_quantity
: INT, 재고 수량
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100),
category VARCHAR(50),
price DECIMAL(10, 2),
stock_quantity INT
);
3. 데이터 삽입
문제: 다음 데이터를 products
테이블에 삽입하세요.
product_name | category | price | stock_quantity |
---|---|---|---|
Laptop | Electronics | 1200.50 | 10 |
Office Chair | Furniture | 150.75 | 25 |
Headphones | Electronics | 75.00 | 50 |
Coffee Table | Furniture | 200.00 | 15 |
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES
('Laptop', 'Electronics', 1200.50, 10),
('Office Chair', 'Furniture', 150.75, 25),
('Headphones', 'Electronics', 75.00, 50),
('Coffee Table', 'Furniture', 200.00, 15);
4. 데이터 조회
문제 1: products
테이블에서 모든 제품 정보를 조회하세요.
SELECT * FROM products;
문제 2: category
가 'Electronics'인 제품들만 조회하세요.
SELECT * FROM products WHERE category = 'Electronics';
문제 3: 가격이 100달러 이상인 제품들을 조회하세요.
SELECT * FROM products WHERE price >= 100;
5. 데이터 업데이트
문제: 제품 이름이 'Laptop'인 제품의 가격을 1300.00으로 수정하세요.
UPDATE products SET price = 1300.00 WHERE product_name = 'Laptop';
6. 데이터 삭제
문제: 제품 이름이 'Office Chair'인 제품을 삭제하세요.
DELETE FROM products WHERE product_name = 'Office Chair';
7. 데이터 정렬
문제: 가격을 기준으로 제품을 오름차순으로 정렬하여 조회하세요.
SELECT * FROM products ORDER BY price ASC;
8. 데이터 제한 조회
문제: 상위 3개의 제품만 조회하세요.
SELECT * FROM products LIMIT 3;
9. 테이블 수정
문제: products
테이블에 supplier
라는 새로운 필드를 추가하세요. 이 필드는 공급업체의 이름을 저장하며,
VARCHAR(100) 타입입니다.
ALTER TABLE products ADD COLUMN supplier VARCHAR(100);
10. JOIN을 사용한 테이블 결합
문제: orders
라는 새로운 테이블을 생성하세요. 이 테이블은 주문을 저장하며, 각 필드는 다음과 같습니다.
order_id
: INT, 자동 증가, 기본 키order_date
: DATE, 주문 날짜product_id
: INT, 외래 키,products
테이블을 참조quantity
: INT, 주문 수량
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
order_date DATE,
product_id INT,
quantity INT,
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
11. JOIN 쿼리 작성
문제: orders
테이블과 products
테이블을 결합하여, 주문된 제품 이름과 주문 날짜를 조회하세요.
SELECT orders.order_date, products.product_name
FROM orders
INNER JOIN products ON orders.product_id = products.product_id;
12. 집계 함수
문제 1: products
테이블에서 각 카테고리별로 제품의 개수를 계산하세요.
SELECT category, COUNT(*) AS total_products
FROM products
GROUP BY category;
문제 2: 전체 제품 재고의 총합을 계산하세요.
SELECT SUM(stock_quantity) AS total_stock FROM products;
13. 데이터베이스 삭제
문제: store
데이터베이스를 삭제하세요.
DROP DATABASE store;
14. 트랜잭션 관리
문제: 트랜잭션을 시작하고, 'Laptop' 제품의 가격을 1400으로 증가시키고 나서, 트랜잭션을 커밋하여 변경 사항을 저장하세요.
START TRANSACTION;
UPDATE products SET price = 1400.00 WHERE product_name = 'Laptop';
COMMIT;
15. 조건부 데이터 삭제
문제: 재고 수량이 20 미만인 모든 제품을 삭제하세요.
DELETE FROM products WHERE stock_quantity < 20;
요약
이 SQL 실습 문제들은 데이터베이스 관리, 테이블 생성, 데이터 조작 및 조회에 대한 기본적인 SQL 문법을 학습할 수 있는 좋은 기회입니다. 실습을 통해 데이터베이스를 효율적으로 관리하고, 다양한 SQL 쿼리를 작성하는 능력을 키울 수 있습니다.