본문 바로가기
카테고리 없음

(9/15일) MySQL 문법 연습문제|결과를 보고 SQL을 단계별로 만들어보기

by proprocess-manager 2026. 9. 16.
반응형

MySQL을 처음 배우면서 가장 어려웠던 부분 중 하나는 문법 자체보다 "어떤 상황에서 어떤 문법을 사용해야 하는가?"를 판단하는 것이었습니다.

그래서 이번에는 강의 자료의 예시를 그대로 따라 하는 대신, 도서관, 쇼핑몰, 영화관 등 다른 상황을 만들어 배운 SQL 문법을 직접 적용해 보았습니다.

이 글에서는 정답을 처음부터 보여주지 않습니다. 먼저 최종 결과물을 보고, 그 결과를 만들기 위해 필요한 SQL 문법을 생각해 봅니다.

그 다음 단계별로 문법을 확인하고, 마지막에 전체 SQL 코드를 확인하는 방식입니다.

이 문제를 푸는 방법

단계 생각할 내용
① 결과물 확인 최종적으로 어떤 결과가 필요한지 확인합니다.
② SQL 문법 확인 결과를 만들기 위해 어떤 명령어가 필요한지 생각합니다.
③ 문법 조립 각 명령어를 어떤 순서로 연결할지 생각합니다.
④ 최종 SQL 확인 완성된 SQL 코드를 확인합니다.
💡 중요한 점

정답을 바로 보지 않고 먼저 스스로 생각해 보는 것이 중요합니다. 모르는 문제라도 먼저 어떤 문법이 필요할지 추측해 본 뒤 풀이를 열어보세요.

문제 1. 도서관 데이터베이스 만들기

작은 도서관에서 책 정보를 관리하기 위한 데이터베이스를 만들려고 합니다.

다음과 같은 구조를 만들려고 합니다.

  • 데이터베이스 이름 : library_db
  • 테이블 이름 : books
  • 책 번호 : book_id
  • 책 제목 : title
  • 출판 연도 : publish_year
🎯 최종 결과물

최종적으로 다음과 같은 데이터베이스와 테이블이 만들어져야 합니다.

library_db
└── books
    ├── book_id
    ├── title
    └── publish_year
① 필요한 SQL 문법 확인하기

먼저 필요한 문법만 확인해 봅니다.

  • CREATE DATABASE → 데이터베이스 생성
  • USE → 사용할 데이터베이스 선택
  • CREATE TABLE → 테이블 생성
② 문법을 단계별로 조립하기

순서를 생각해 봅니다.

  1. 데이터베이스를 만든다.
  2. 만든 데이터베이스를 사용한다.
  3. 그 안에 테이블을 만든다.
CREATE DATABASE ...
USE ...
CREATE TABLE ...

이제 데이터베이스 이름과 테이블의 컬럼 정보를 넣으면 됩니다.

③ 최종 SQL 코드 확인하기
CREATE DATABASE library_db;

USE library_db;

CREATE TABLE books (
    book_id INT PRIMARY KEY,
    title VARCHAR(100),
    publish_year INT
);

문제 2. 상품 정보 입력하기

온라인 쇼핑몰에서 판매할 상품 3개를 등록하려고 합니다.

상품번호 상품명 가격
101 무선 키보드 35000
102 USB 허브 18000
103 노트북 거치대 27000
🎯 최종 결과물

상품 테이블에 다음 3개의 데이터가 저장되어야 합니다.

101 | 무선 키보드 | 35000
102 | USB 허브 | 18000
103 | 노트북 거치대 | 27000
① 필요한 SQL 문법 확인하기
  • INSERT INTO → 테이블에 새로운 데이터 입력
  • VALUES → 입력할 실제 값 지정

이미 만들어진 테이블에 데이터를 넣는 상황이므로 테이블을 만드는 CREATE TABLE은 필요하지 않습니다.

② 문법을 단계별로 조립하기

먼저 어느 테이블에 데이터를 넣을지 지정합니다.

INSERT INTO products

그 다음 입력할 컬럼을 지정합니다.

INSERT INTO products (product_id, product_name, price)

마지막으로 실제 값을 VALUES 뒤에 작성합니다.

③ 최종 SQL 코드 확인하기
INSERT INTO products (product_id, product_name, price)
VALUES
    (101, '무선 키보드', 35000),
    (102, 'USB 허브', 18000),
    (103, '노트북 거치대', 27000);

문제 3. 특정 가격 이상의 상품 찾기

상품 목록에서 가격이 25,000원 이상인 상품만 조회하려고 합니다.

🎯 최종 결과물
무선 키보드 | 35000
노트북 거치대 | 27000

가격이 25,000원보다 낮은 상품은 결과에서 제외되어야 합니다.

① 필요한 SQL 문법 확인하기
  • SELECT → 데이터를 조회
  • FROM → 조회할 테이블 지정
  • WHERE → 조건 지정
  • >= → 이상을 의미하는 비교 연산자
② 문법을 단계별로 조립하기

먼저 상품명과 가격을 조회합니다.

SELECT product_name, price
FROM products

여기에 "가격이 25,000원 이상"이라는 조건을 추가합니다.

WHERE price >= 25000
③ 최종 SQL 코드 확인하기
SELECT product_name, price
FROM products
WHERE price >= 25000;

문제 4. 특정 기간에 개봉한 영화 찾기

영화관에서 관리하는 영화 목록 중 2020년부터 2023년 사이에 개봉한 영화만 조회하려고 합니다.

🎯 최종 결과물

개봉 연도가 다음 범위에 포함되는 영화만 출력됩니다.

2020
2021
2022
2023
① 필요한 SQL 문법 확인하기
  • SELECT → 영화 정보 조회
  • WHERE → 조건 지정
  • BETWEEN → 특정 범위 지정
② 문법을 단계별로 조립하기

먼저 영화명과 개봉 연도를 조회합니다.

SELECT movie_name, release_year
FROM movies

그 다음 개봉 연도의 범위를 지정합니다.

WHERE release_year BETWEEN 2020 AND 2023
③ 최종 SQL 코드 확인하기
SELECT movie_name, release_year
FROM movies
WHERE release_year BETWEEN 2020 AND 2023;

문제 5. 특정 카테고리 상품 찾기

쇼핑몰 상품 중 카테고리가 생활용품 또는 주방용품인 상품만 조회하려고 합니다.

🎯 최종 결과물

다음 두 카테고리에 해당하는 상품만 출력됩니다.

생활용품
주방용품
① 필요한 SQL 문법 확인하기
  • SELECT → 데이터 조회
  • FROM → 테이블 지정
  • WHERE → 조건 지정
  • IN → 여러 값 중 하나에 해당하는지 확인
② 문법을 단계별로 조립하기

먼저 상품명과 카테고리를 조회합니다.

SELECT product_name, category
FROM products

그리고 두 개의 카테고리 중 하나에 해당하는 데이터를 찾습니다.

WHERE category IN ('생활용품', '주방용품')
③ 최종 SQL 코드 확인하기
SELECT product_name, category
FROM products
WHERE category IN ('생활용품', '주방용품');

같은 조건을 OR로 작성할 수도 있습니다.

SELECT product_name, category
FROM products
WHERE category = '생활용품'
   OR category = '주방용품';

문제 6. 제목에 특정 단어가 들어간 책 찾기

도서관에서 책 제목에 "여행"이라는 단어가 들어간 책을 찾으려고 합니다.

🎯 최종 결과물

예를 들어 다음과 같은 책들이 검색되어야 합니다.

아이와 떠나는 국내 여행
혼자 준비하는 여행
사진으로 기록하는 여행
① 필요한 SQL 문법 확인하기
  • SELECT → 데이터 조회
  • FROM → 테이블 지정
  • WHERE → 조건 지정
  • LIKE → 문자열 패턴 검색
  • % → 앞뒤에 다른 문자열이 있을 수 있음을 의미
② 문법을 단계별로 조립하기

책 제목을 조회합니다.

SELECT title
FROM books

제목에 "여행"이라는 문자열이 포함된 경우를 찾습니다.

WHERE title LIKE '%여행%'
③ 최종 SQL 코드 확인하기
SELECT title
FROM books
WHERE title LIKE '%여행%';

%여행%은 "여행" 앞이나 뒤에 다른 문자가 있어도 검색할 수 있도록 합니다.

광고 영역

문제 7. 가격이 높은 상품부터 정렬하기

상품을 가격이 높은 순서부터 낮은 순서로 정렬해서 보고 싶습니다.

🎯 최종 결과물
무선 키보드 | 35000
노트북 거치대 | 27000
USB 허브 | 18000
① 필요한 SQL 문법 확인하기
  • SELECT → 상품 조회
  • FROM → 상품 테이블 지정
  • ORDER BY → 결과 정렬
  • DESC → 내림차순 정렬
② 문법을 단계별로 조립하기

먼저 상품명과 가격을 조회합니다.

SELECT product_name, price
FROM products

가격을 기준으로 정렬합니다.

ORDER BY price

높은 가격부터 낮은 가격이므로 DESC를 사용합니다.

ORDER BY price DESC
③ 최종 SQL 코드 확인하기
SELECT product_name, price
FROM products
ORDER BY price DESC;

문제 8. 가장 비싼 상품 2개만 찾기

전체 상품 중 가격이 높은 상품 상위 2개만 조회하려고 합니다.

🎯 최종 결과물
1위 상품
2위 상품

가격이 높은 순서로 정렬된 상태에서 2개의 상품만 표시되어야 합니다.

① 필요한 SQL 문법 확인하기
  • SELECT → 상품 조회
  • ORDER BY → 가격순 정렬
  • DESC → 높은 가격부터 정렬
  • LIMIT → 결과 개수 제한

이 문제에서는 정렬과 결과 개수 제한이라는 두 가지 작업이 필요합니다.

② 문법을 단계별로 조립하기

먼저 가격을 기준으로 높은 순서로 정렬합니다.

SELECT product_name, price
FROM products
ORDER BY price DESC

그 다음 결과에서 2개만 가져옵니다.

LIMIT 2
③ 최종 SQL 코드 확인하기
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 2;

여기서 중요한 것은 가격순으로 정렬한 다음 2개로 제한한다는 것입니다.

문제 9. 상품 가격 수정하기

상품 번호가 102인 USB 허브의 가격을 20,000원으로 변경하려고 합니다.

🎯 최종 결과물

변경 전

102 | USB 허브 | 18000

변경 후

102 | USB 허브 | 20000
① 필요한 SQL 문법 확인하기
  • UPDATE → 기존 데이터 수정
  • SET → 변경할 값을 지정
  • WHERE → 수정할 데이터의 조건 지정

새로운 데이터를 넣는 것이 아니라 기존 데이터를 수정하는 상황입니다. 따라서 INSERT INTO가 아니라 UPDATE가 필요합니다.

② 문법을 단계별로 조립하기

먼저 어떤 테이블을 수정할지 지정합니다.

UPDATE products

가격을 20,000원으로 변경합니다.

SET price = 20000

그런데 모든 상품의 가격을 바꾸면 안 됩니다. 상품 번호가 102인 상품만 수정해야 합니다.

WHERE product_id = 102
③ 최종 SQL 코드 확인하기
UPDATE products
SET price = 20000
WHERE product_id = 102;
⚠️ UPDATE에서 중요한 점

WHERE 조건을 빠뜨리면 여러 데이터가 수정될 수 있습니다. 따라서 특정 데이터만 수정할 때는 조건을 반드시 확인하는 습관이 필요합니다.

문제 10. 판매 종료 상품 삭제하기

상품 번호가 103인 노트북 거치대의 판매가 종료되었습니다.

따라서 상품 목록에서 해당 상품을 삭제하려고 합니다.

🎯 최종 결과물

삭제 전

101 | 무선 키보드
102 | USB 허브
103 | 노트북 거치대

삭제 후

101 | 무선 키보드
102 | USB 허브
① 필요한 SQL 문법 확인하기
  • DELETE → 데이터 삭제
  • FROM → 삭제할 테이블 지정
  • WHERE → 삭제할 데이터의 조건 지정

기존 데이터를 수정하는 것이 아니라 특정 데이터를 제거해야 하므로 DELETE를 사용합니다.

② 문법을 단계별로 조립하기

먼저 삭제할 테이블을 지정합니다.

DELETE FROM products

상품 번호가 103인 상품만 삭제하도록 조건을 추가합니다.

WHERE product_id = 103
③ 최종 SQL 코드 확인하기
DELETE FROM products
WHERE product_id = 103;
⚠️ DELETE에서 중요한 점

DELETE 역시 조건을 잘못 작성하거나 WHERE를 생략하면 원하지 않는 데이터까지 삭제할 수 있습니다.

광고 영역

10문제를 풀고 나서 다시 연결해 보기

이번 문제에서 중요한 것은 SQL 명령어를 단순히 암기하는 것이 아니라 문제의 상황을 보고 필요한 명령어를 선택하는 것입니다.

문제의 상황 생각할 SQL 문법
데이터베이스를 만든다 CREATE DATABASE
사용할 데이터베이스를 선택한다 USE
테이블을 만든다 CREATE TABLE
새로운 데이터를 넣는다 INSERT INTO
데이터를 조회한다 SELECT
조건을 붙인다 WHERE
범위로 검색한다 BETWEEN
여러 값 중 하나를 검색한다 IN / OR
문자열 일부를 검색한다 LIKE
조회 결과를 정렬한다 ORDER BY
조회 결과 개수를 제한한다 LIMIT
기존 데이터를 수정한다 UPDATE
기존 데이터를 삭제한다 DELETE

마무리|SQL을 외우기보다 결과에서 거꾸로 생각하기

처음 SQL을 배우면 SELECT, WHERE, ORDER BY 같은 명령어를 각각 외우려고 하기 쉽습니다.

하지만 실제 문제를 풀 때는 문제에서 요구하는 결과를 먼저 파악하는 것이 중요하다는 것을 이번 연습을 통해 확인할 수 있었습니다.

예를 들어,

  • 새로운 데이터를 입력한다 → INSERT INTO
  • 데이터를 조회한다 → SELECT
  • 조건을 붙인다 → WHERE
  • 범위를 지정한다 → BETWEEN
  • 여러 값 중 하나를 찾는다 → IN
  • 문자열을 검색한다 → LIKE
  • 결과를 정렬한다 → ORDER BY
  • 결과 개수를 제한한다 → LIMIT
  • 기존 데이터를 수정한다 → UPDATE
  • 데이터를 삭제한다 → DELETE

이렇게 상황과 SQL 문법을 연결해 놓으면 처음 보는 문제에서도 필요한 명령어를 조금씩 추측할 수 있습니다.

아직 모든 문법이 익숙하지 않기 때문에 결과를 먼저 보고 → 필요한 문법을 찾고 → 문법을 조립하고 → 최종 코드를 확인하는 방식으로 계속 연습해 보려고 합니다.

※ 이 글의 SQL 예시는 MySQL 문법을 연습하기 위해 구성한 예제입니다. 실제 데이터베이스에서는 테이블명과 컬럼명에 따라 SQL을 조정해야 합니다.

반응형