약 8분
본문 듣기
읽기 설정
글자 크기
줄 간격
글꼴
4.3 실습 문제 및 응용 과제
이 섹션에서는 배운 SQL 개념을 바탕으로 실습 문제와 응용 과제를 제공합니다. 학습한 내용의 이해도를 높이기 위해 실습을 통해 직접 SQL을 작성해보고, 이론적인 지식을 실제 데이터베이스 설계에 적용해보세요.
4.3.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 ); -
더미 데이터 삽입하기
members테이블에 아래의 데이터를 삽입하세요.이름 이메일 홍길동 hong@example.com 김철수 kim@example.com INSERT INTO members (name, email) VALUES ('홍길동', 'hong@example.com'), ('김철수', 'kim@example.com'); -
가입된 회원 조회하기
모든 회원의 정보를 조회하는 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), 수량
- 각 테이블을 생성하는 SQL을 작성하세요.
- 예시 데이터를 삽입하세요.
- 각 회원의 주문 내역을 확인하기 위한 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
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.