코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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 쿼리를 작성하는 능력을 키울 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com