코딩 스쿨 MySQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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 테이블을 생성하세요. 이 테이블은 booksmembers 테이블을 참조하는 외래 키를 포함하고 있으며, 각 필드는 다음과 같습니다.

  • 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 문법을 익히고, 데이터베이스 관리에 대한 실무 능력을 높일 수 있습니다.


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