5-3 연습 문제 — 좋은 vs 나쁜 프롬프트,
결과 차이를 눈으로 비교한다
이번 강의에서 배운 5 안티패턴 + 5 원칙을 직접 손으로 굴려봅니다. 나쁜 프롬프트를 진단하고, 좋은 프롬프트로 고쳐 쓰고, 마지막엔 둘 다 AI에 던져 결과 차이를 눈으로 비교하는 게 이 챕터 연습의 핵심 — 직접 던져본 프롬프트만 머리에 남습니다.
이번 연습의 위치
완료 ✓
강의 완료 ✓
지금 여기
복잡한 SQL 나누기
섹션 5 마무리 ⭐
2-4에서 만든 AI 과외 선생님 세션을 그대로 쓰세요. 막히면 정답이 아니라 힌트만 요청하고 — 다 푼 뒤에는 본인의 답을 던지며 “내 프롬프트가 5 원칙을 다 지켰는지 검증해줘” 라고 물어보세요. 특히 이 챕터의 연습은 답을 AI에 직접 던지고 결과 차이를 눈으로 비교하는 게 핵심입니다.
문제 1. 나쁜 프롬프트 진단
다음 프롬프트들을 보고 — 5 안티패턴 중 어디에 해당하는지 식별하세요.
| # | 프롬프트 | 해당 안티패턴 |
|---|---|---|
| A | ”활성 유저 분석해줘” | ? |
| B | ”shop DB. 월별 매출 / 카테고리별 매출 / 연령대별 매출 / 회원별 매출 다 한 번에” | ? |
| C | ”카테고리별 매출 — SELECT category_id, SUM(price * quantity) FROM ... 만들어줘” (테이블/관계는 안 줌) | ? |
| D | ”회원 정보 보여줘” (출력 컬럼 / 정렬 / 행 수 안 줌) | ? |
| E | (AI 가 SQL 만들어줌) “오 됐네” → DBeaver 실행 → 결과만 보고 끝 | ? |
정답 보기
| # | 해당 안티패턴 | 보완 |
|---|---|---|
| A | 안티패턴 ② (모호한 단어) — “활성” 정의 안 됨 | ”지난 30일 안에 주문한 회원” 처럼 구체화 |
| B | 안티패턴 ④ (한 번에 너무 많이) — 4 개 SQL 한 번에 | 한 개씩 받고 검증, 다음 |
| C | 안티패턴 ① (컨텍스트 없는 한 줄) — 테이블 구조 / 관계 미제공 | 스키마 + 부모-자식 관계 같이 |
| D | 안티패턴 ③ (결과 형태를 말하지 않음) — 출력 / 정렬 / 행 수 모름 | ”이름, 가입일 출력, 가입 최근순, 10명” |
| E | 안티패턴 ⑤ (받은 SQL을 검증하지 않음) — 가장 위험 | 행 수 / 의미 의심 + AI 에 검산 요청 |
문제 2. 안티패턴 → 좋은 프롬프트로 변환
문제 1 의 A·C·D 각각을 — 좋은 프롬프트 로 다시 짜보세요.
모범 답안
A 변환
나쁨: “활성 유저 분석해줘”
좋음:
[테이블 구조]
- members: member_id PK, member_name, gender, age, joined_at
- orders: order_id PK, member_id FK, ordered_at
[정의]
"활성 유저" = 지난 30일 안에 주문한 회원
[요구사항]
지난 30일 안에 주문한 회원 수 + 그들의 평균 나이.
출력: 활성_유저수, 평균_나이.
오늘 날짜 기준 (CURDATE()) 으로 계산.C 변환
나쁨: “카테고리별 매출 — SELECT ... 만들어줘” (테이블 구조 X)
좋음:
[테이블 구조]
- categories: category_id PK, category_name
- products: product_id PK, price, category_id FK
- order_items: order_id FK, product_id FK, quantity
[부모-자식 관계]
- categories 1:N products
- products 1:N order_items
[요구사항]
카테고리별 매출 (price × quantity 합).
출력: 카테고리명, 총매출. 매출 많은 순.D 변환
나쁨: “회원 정보 보여줘”
좋음:
[테이블 구조]
- members: member_id PK, member_name, gender (M/F), age, joined_at
[요구사항]
회원 명단.
- 출력 컬럼: 이름, 성별, 나이, 가입일
- 정렬: 가입 최근 순
- 행 수: 10명문제 3 (도전). 실제 비교 시연
나쁜 프롬프트 와 좋은 프롬프트 를 — 같은 AI (ChatGPT 또는 Claude) 에 던지고 결과를 비교하세요.
실험 절차
- 나쁜 프롬프트 던지기: “shop 의 인기 상품 보여줘”
- AI 가 만든 SQL 을 DBeaver 에서 실행
- 결과 관찰 — 어떤 컬럼? 어떤 정렬? 의미가 맞는가?
- 좋은 프롬프트 던지기 (5 원칙 다 채워서) — 같은 “인기 상품” 의도
- AI SQL 을 실행, 결과 관찰
- 두 결과의 차이 정리
비교 항목
- 컨텍스트 추측 — 나쁜 프롬프트의 AI 가 어떻게 추측했나? 그게 본인 의도와 같았나?
- 결과 차이 — 행 수, 컬럼, 정렬이 어떻게 달랐나?
- 재시도 횟수 — 나쁜 프롬프트는 보완하려고 몇 번 더 던졌나?
- 검증 시간 — 어느 쪽이 검증이 빨랐나?
가이드
이 실험은 정답이 없습니다. 목적은 직접 체감 하는 것.
예상되는 발견:
AI가 의도를 추측합니다
AI 가 “가장 비싼 상품” 으로 해석할 수 있습니다. 본인 의도가 “가장 많이 팔린” 이었다면 어긋남 — 보완 메시지를 1-2번 더 보내야 의도에 도달합니다.
첫 시도에서 의도와 일치
5 원칙을 다 채워서 던지면 첫 SQL 부터 의도와 일치하고, 결과 형태를 미리 명시했으니 검증은 1초면 끝납니다.
“프롬프트 쓰는 시간 1 분 = 보완 시간 5 분 + 잘못된 결과로 인한 사고 시간 1 시간.”
미리 좋은 프롬프트 쓰는 게 — 전체 시간을 줄입니다.
이 실험을 한 번 해두면 — 앞으로 평생 좋은 프롬프트 쓰는 습관 이 생깁니다.
다섯 안티패턴을 진단하고, 고쳐 쓰고, 결과 차이까지 눈으로 확인했다면 — 다음은 한 번에 만들기 어려운 복잡한 SQL 을 단계로 쪼개는 법입니다.