MySQL Exercises
MySQL Exercises: 실습 문제 및 해설
MySQL의 기본 개념과 SQL 문법을 연습할 수 있는 문제들입니다. 데이터베이스 생성부터 테이블 관리, 데이터 삽입, 조회, 수정, 삭제 등의 기능을 익힐 수 있는 실습 문제들을 제시합니다.
1. 데이터베이스 생성 및 선택
문제: library
라는 이름의 데이터베이스를 생성하고, 해당 데이터베이스를 사용하세요.
-- 데이터베이스 생성
CREATE DATABASE library;
-- 데이터베이스 선택
USE library;
2. 테이블 생성
문제: books
라는 테이블을 생성하세요. 테이블은 다음과 같은 필드를 가집니다.
book_id
: INT, 자동 증가, 기본 키title
: VARCHAR(255), 책 제목author
: VARCHAR(255), 저자published_year
: YEAR, 출판 연도genre
: VARCHAR(100), 장르
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
author VARCHAR(255),
published_year YEAR,
genre VARCHAR(100)
);
3. 데이터 삽입
문제: 다음 데이터를 books
테이블에 삽입하세요.
title | author | published_year | genre |
---|---|---|---|
The Catcher in the Rye | J.D. Salinger | 1951 | Fiction |
To Kill a Mockingbird | Harper Lee | 1960 | Fiction |
The Great Gatsby | F. Scott Fitzgerald | 1925 | Classic |
1984 | George Orwell | 1949 | Dystopian |
INSERT INTO books (title, author, published_year, genre)
VALUES
('The Catcher in the Rye', 'J.D. Salinger', 1951, 'Fiction'),
('To Kill a Mockingbird', 'Harper Lee', 1960, 'Fiction'),
('The Great Gatsby', 'F. Scott Fitzgerald', 1925, 'Classic'),
('1984', 'George Orwell', 1949, 'Dystopian');
4. 데이터 조회
문제 1: 모든 책 정보를 조회하세요.
SELECT * FROM books;
문제 2: genre
가 'Fiction'인 책들만 조회하세요.
SELECT * FROM books WHERE genre = 'Fiction';
문제 3: 출판 연도가 1950년 이후인 책들만 조회하세요.
SELECT * FROM books WHERE published_year > 1950;
5. 데이터 업데이트
문제: 책 제목이 '1984'인 책의 장르를 'Science Fiction'으로 수정하세요.
UPDATE books SET genre = 'Science Fiction' WHERE title = '1984';
6. 데이터 삭제
문제: 저자가 'Harper Lee'인 책을 삭제하세요.
DELETE FROM books WHERE author = 'Harper Lee';
7. 정렬된 데이터 조회
문제: 출판 연도 기준으로 책 정보를 오름차순으로 정렬하여 조회하세요.
SELECT * FROM books ORDER BY published_year ASC;
8. 데이터 제한 조회
문제: 가장 최근에 출판된 책 2권만 조회하세요.
SELECT * FROM books ORDER BY published_year DESC LIMIT 2;
9. 기본 키 및 제약 조건
문제: members
라는 테이블을 생성하세요. 테이블은 다음과 같은 필드를 가집니다.
member_id
: INT, 자동 증가, 기본 키name
: VARCHAR(255), 회원 이름email
: VARCHAR(100), 이메일, 중복 불가 (고유)membership_date
: DATE, 회원 가입일
CREATE TABLE members (
member_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(100) UNIQUE,
membership_date DATE
);
10. JOIN을 사용한 테이블 결합
문제: borrowed_books
테이블을 생성하세요. 이 테이블은 books
와 members
테이블을
참조하는 외래 키를 포함하고 있으며, 각 필드는 다음과 같습니다.
borrow_id
: INT, 자동 증가, 기본 키book_id
: INT, 외래 키,books
테이블을 참조member_id
: INT, 외래 키,members
테이블을 참조borrow_date
: DATE, 대출일return_date
: DATE, 반납일
CREATE TABLE borrowed_books (
borrow_id INT AUTO_INCREMENT PRIMARY KEY,
book_id INT,
member_id INT,
borrow_date DATE,
return_date DATE,
FOREIGN KEY (book_id) REFERENCES books(book_id),
FOREIGN KEY (member_id) REFERENCES members(member_id)
);
11. JOIN 쿼리 작성
문제: 대출된 책들의 제목과 해당 책을 대출한 회원 이름을 조회하세요.
SELECT books.title, members.name
FROM borrowed_books
INNER JOIN books ON borrowed_books.book_id = books.book_id
INNER JOIN members ON borrowed_books.member_id = members.member_id;
12. 집계 함수 (COUNT, SUM)
문제 1: books
테이블에서 장르별 책 개수를 구하세요.
SELECT genre, COUNT(*) AS total_books
FROM books
GROUP BY genre;
문제 2: 총 대출된 책의 개수를 조회하세요.
SELECT COUNT(*) AS total_borrowed_books FROM borrowed_books;
13. 테이블 수정
문제: books
테이블에 price
라는 새로운 필드를 추가하세요. price
는 소수점 둘째 자리까지 표현되는
DECIMAL(10, 2)
타입입니다.
ALTER TABLE books ADD COLUMN price DECIMAL(10, 2);
14. 데이터 삭제 및 테이블 삭제
문제: 모든 대출 기록을 삭제하고 borrowed_books
테이블도 삭제하세요.
DELETE FROM borrowed_books;
DROP TABLE borrowed_books;
15. 데이터베이스 삭제
문제: library
데이터베이스를 삭제하세요.
DROP DATABASE library;
요약
이 MySQL 실습 문제들은 데이터베이스 생성부터 테이블 관리, 데이터 조회, 수정, 삭제 등 MySQL의 기본적인 기능을 학습하는 데 도움이 됩니다. 각 문제를 통해 SQL 문법을 익히고, 데이터베이스 관리에 대한 실무 능력을 높일 수 있습니다.