4.3 실습 문제 및 응용 과제

약 8분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

4.3 실습 문제 및 응용 과제

이 섹션에서는 배운 SQL 개념을 바탕으로 실습 문제와 응용 과제를 제공합니다. 학습한 내용의 이해도를 높이기 위해 실습을 통해 직접 SQL을 작성해보고, 이론적인 지식을 실제 데이터베이스 설계에 적용해보세요.

4.3.1 실습 문제

  1. 회원 테이블 생성하기
    아래의 요구사항에 맞춰 회원 정보를 저장하는 members 테이블을 생성하세요.

    • 회원 ID (Primary Key, INT)
    • 이름 (VARCHAR(100))
    • 이메일 (VARCHAR(255), UNIQUE)
    • 가입일 (DATETIME, DEFAULT CURRENT_TIMESTAMP)
    CREATE TABLE members (
        member_id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(255) NOT NULL UNIQUE,
        join_date DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    
  2. 더미 데이터 삽입하기
    members 테이블에 아래의 데이터를 삽입하세요.

    이름 이메일
    홍길동 hong@example.com
    김철수 kim@example.com
    INSERT INTO members (name, email) VALUES
    ('홍길동', 'hong@example.com'),
    ('김철수', 'kim@example.com');
    
  3. 가입된 회원 조회하기
    모든 회원의 정보를 조회하는 SQL 쿼리를 작성하세요.

    SELECT * FROM members;
    

4.3.2 응용 과제

실제 서비스에서 활용할 수 있는 데이터베이스를 설계해보세요. 다음과 같은 시나리오에 따라 테이블을 설계하고, 필요한 SQL 쿼리를 작성해보세요.

시나리오: 쇼핑몰 데이터베이스 설계

  • 제품 테이블: 제품 ID (Primary Key), 이름, 가격, 재고 수량
  • 주문 테이블: 주문 ID (Primary Key), 회원 ID (Foreign Key), 주문 날짜
  • 주문 상세 테이블: 주문 상세 ID (Primary Key), 주문 ID (Foreign Key), 제품 ID (Foreign Key), 수량
  1. 각 테이블을 생성하는 SQL을 작성하세요.
  2. 예시 데이터를 삽입하세요.
  3. 각 회원의 주문 내역을 확인하기 위한 SQL 쿼리를 작성하세요.

예제 테이블 생성 SQL

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    stock INT NOT NULL
);

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    member_id INT,
    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (member_id) REFERENCES members(member_id)
);

CREATE TABLE order_details (
    order_detail_id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT,
    product_id INT,
    quantity INT NOT NULL,
    FOREIGN KEY (order_id) REFERENCES orders(order_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

이 과제를 통해 SQL 기본 문법은 물론, 데이터베이스 설계의 중요성과 실제 활용을 함께 이해하게 될 것입니다.

코드 sql
CREATE TABLE members (
    member_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    join_date DATETIME DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO members (name, email) VALUES
('홍길동', 'hong@example.com'),
('김철수', 'kim@example.com');

SELECT * FROM members;

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    stock INT NOT NULL
);

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    member_id INT,
    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (member_id) REFERENCES members(member_id)
);

CREATE TABLE order_details (
    order_detail_id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT,
    product_id INT,
    quantity INT NOT NULL,
    FOREIGN KEY (order_id) REFERENCES orders(order_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.