SQL을 모르는 비개발자도 ChatGPT나 Claude로 데이터베이스 쿼리를 받아낼 수 있습니다. AI sql 쿼리 요청 시 막히지 않는 프롬프트 5가지와 자주 틀리는 지점, 검증 방법까지 약 10분 안에 정리합니다.

엑셀로 며칠씩 걸리던 집계 작업, 사내 데이터베이스에 직접 물어보면 1초 만에 끝나는 경우가 많습니다. 문제는 그 "물어보는 언어"가 SQL이라는 점입니다. AI sql 쿼리 요청은 이 장벽을 거의 없애주지만, 대충 부탁하면 잘못된 결과를 그럴듯하게 받게 됩니다(이게 가장 위험합니다). 이 글은 코드를 한 줄도 안 짜본 분도 따라할 수 있게, AI에게 SQL을 잘 부탁하는 5가지 프롬프트 패턴과 검증 요령을 정리한 글입니다. 어렵지 않으니 천천히 따라와 보세요.
SQL이 뭐고, 왜 AI한테 시키나
SQL은 데이터베이스에 "이런 데이터 좀 보여줘"라고 묻는 표준 언어입니다. 영어로 "Structured Query Language"의 줄임말인데, 실제 모양도 영어 문장과 비슷합니다. 예를 들어 SELECT name FROM users WHERE age > 30 은 "users라는 표에서 나이가 30 넘는 사람의 이름을 골라줘"라는 뜻입니다.
문제는 표 이름, 컬럼(열) 이름, 조건이 조금만 복잡해져도 사람이 외우기 어렵다는 겁니다. 특히 여러 표를 합쳐서(JOIN) 보는 쿼리는 개발자도 자주 틀립니다. 그래서 ChatGPT나 Claude에게 "이런 결과를 뽑고 싶다"고 한국어로 설명하면, AI가 SQL로 번역해주는 방식이 빠르게 퍼지고 있습니다.
| 직접 SQL 짜기 | AI에게 부탁하기 |
|---|---|
| 문법 외워야 함 | 한국어로 설명 |
| 오타 한 번에 에러 | AI가 알아서 작성 |
| 학습 곡선 김 | 5분 안에 시작 |
| 결과 100% 본인 책임 | 검증은 여전히 본인 책임 |
마지막 줄이 핵심입니다. AI가 짜준 쿼리도 결국 누군가 실행해야 하고, 결과가 맞는지는 사람이 봐야 합니다. 이 글의 프롬프트들은 그 "틀릴 확률"을 최대한 낮추는 데 초점이 있습니다.
좋은 프롬프트가 갖춰야 할 4가지
AI에게 SQL을 부탁하기 전에, 어떤 정보가 들어가야 정확도가 올라가는지부터 알아두면 좋습니다. 제가 1년 가까이 다양한 도구로 써본 결과, 다음 4가지가 빠지면 거의 매번 어긋납니다.
[1] 데이터베이스 종류 예) MySQL 8.0, PostgreSQL 15, SQLite
↓
[2] 표(테이블) 구조 예) users 표에 id, name, created_at 컬럼이 있음
↓
[3] 원하는 결과 예) "최근 30일간 가입한 사용자 수를 일별로"
↓
[4] 제약 조건 예) "탈퇴한 사람은 빼고", "성능 고려해서"
특히 [1]번이 의외로 중요합니다. SQL은 표준이 있긴 하지만 데이터베이스 제품마다 날짜 함수, 문자열 함수 문법이 조금씩 다릅니다. MySQL에서 잘 도는 쿼리가 PostgreSQL에서는 에러를 내는 경우가 흔합니다. AI도 어떤 제품인지 모르면 가장 일반적인 표준으로 답하는데, 정작 본인이 쓰는 제품은 그 표준을 안 따를 수 있습니다.
[2]번 표 구조는 회사 데이터베이스 담당자에게 "이 테이블의 컬럼 좀 알려달라"고 하거나, DB 관리 도구(예: DBeaver, TablePlus)에서 표를 클릭하면 쉽게 확인할 수 있습니다.
프롬프트 1: 표 구조부터 붙여넣기
가장 자주 빼먹지만 효과가 가장 큰 패턴입니다. 표 구조(스키마)를 그대로 복사해서 AI에게 보여주면, AI가 추측할 필요가 없어집니다.
저는 PostgreSQL 15를 쓰고 있습니다.
다음 두 테이블이 있습니다.
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
ordered_at TIMESTAMP,
status VARCHAR(20)
);
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
signup_date DATE
);
질문: 2024년에 가입한 사용자 중에서
주문 금액 합계가 10만원 넘는 사람의
이름과 총 주문 금액을 보여주세요.
이 프롬프트는 "어떤 데이터베이스인지", "어떤 표가 있는지", "각 열의 자료형이 뭔지", "원하는 결과가 뭔지"를 전부 담고 있습니다. AI가 헛다리 짚을 여지가 거의 없습니다.
CREATE TABLE 부분은 데이터베이스 관리 도구에서 표를 우클릭하면 대부분 "DDL 추출", "Generate SQL" 같은 메뉴로 그대로 뽑아낼 수 있습니다. 모르겠으면 담당자에게 "이 테이블 DDL 좀 보내달라"고 하면 됩니다(개발자라면 다 알아듣는 표현입니다).
프롬프트 2: 예시 결과를 함께 보여주기
말로 설명하기 애매한 결과 형태는 표 한 줄을 직접 그려서 보여주는 게 빠릅니다.
이런 형태의 결과가 나오면 좋겠습니다.
| 월 | 신규가입자수 | 첫주문자수 | 전환율 |
|----------|-------------|-----------|--------|
| 2024-01 | 1,200 | 340 | 28.3% |
| 2024-02 | 1,150 | 380 | 33.0% |
월별로, 가입자 중 첫 주문까지 한 비율을 보고 싶습니다.
말로 "월별 가입자 대비 주문 전환율"이라고만 하면 AI가 분모·분자를 자기 마음대로 잡습니다. 같은 달 가입자 중 같은 달 주문한 사람인지, 가입한 사람이 언젠가라도 주문한 비율인지 — 둘은 완전히 다른 숫자입니다. 표 형태로 보여주면 이런 모호함이 사라집니다.
마케팅 보고서 만드는 분, 매출 분석하는 분은 이 패턴이 특히 잘 맞습니다. 보고서 양식이 이미 머릿속에 있으니 그걸 그대로 베껴 쓰면 됩니다.
프롬프트 3: 단계별로 잘라서 시키기
쿼리가 한 번에 너무 복잡하면, AI도 사람도 검증이 어려워집니다. 이럴 땐 작업을 잘게 쪼개서 단계적으로 부탁하는 게 좋습니다.
다음을 단계별로 만들어주세요.
1단계: 2024년 주문 중 'completed' 상태인 것만 필터
2단계: 사용자별 총 주문 금액과 주문 횟수 집계
3단계: 평균 주문 금액(총금액÷횟수) 추가
4단계: 평균 주문 금액 상위 10명만 추출
각 단계마다 SQL을 따로 보여주시고,
중간 결과가 어떤 모양일지 한 줄 예시도 적어주세요.
이 방식의 장점은 중간에 문제가 생기면 그 단계만 다시 물어볼 수 있다는 겁니다. 한 번에 받은 100줄짜리 쿼리는 어디가 잘못됐는지 찾기가 막막합니다. 4개로 쪼갠 쿼리는 1단계 결과만 실제로 돌려보고, 맞으면 2단계로 넘어가는 식으로 검증할 수 있습니다.
💡 복잡한 쿼리일수록 한 번에 끝내려 하지 말고 "단계별로", "각 단계마다 설명"이라는 표현을 꼭 넣으세요. 정확도가 체감상 크게 올라갑니다.
프롬프트 4: 설명과 검증 방법 같이 받기
AI가 짜준 SQL을 그대로 실행하기 전에, 그 쿼리가 무슨 일을 하는지 한국어로 풀어달라고 부탁하면 좋습니다.
SQL을 짜주시고, 추가로 다음을 해주세요.
(1) 각 줄이 무슨 뜻인지 한국어 주석으로 달아주세요.
(2) 이 쿼리가 의도와 다르게 동작할 수 있는 경우 3가지를 알려주세요.
(3) 결과가 맞는지 확인할 수 있는 간단한 검증 쿼리도 함께 주세요.
(예: 전체 합계 vs 그룹별 합계의 합이 일치하는지 등)
(2)번이 특히 강력합니다. AI는 자기가 짠 쿼리의 약점을 의외로 잘 짚어냅니다. "NULL 값이 있는 행은 빠집니다", "같은 사용자가 두 번 가입한 경우 중복됩니다" 같은 함정을 미리 알려주면, 결과를 보고도 안심할 수 있습니다.
(3)번 검증 쿼리는 회계 장부의 "맞춰보기"와 비슷합니다. 메인 쿼리 결과의 합이 원래 데이터의 합과 같은지 확인하는 식이죠. 이게 어긋나면 어딘가 빠뜨렸거나 중복 카운트한 겁니다.
프롬프트 5: 에러 메시지 그대로 붙여넣기
쿼리를 실제로 돌렸는데 빨간 에러가 떴을 때 쓰는 패턴입니다. 비개발자가 가장 당황하는 순간인데, 사실 가장 쉽습니다.
아래 SQL을 실행했더니 다음 에러가 떴습니다.
[실행한 SQL]
SELECT user_id, COUNT(*)
FROM orders
WHERE ordered_at > '2024-01-01';
[에러 메시지]
ERROR: column "user_id" must appear in the GROUP BY clause
or be used in an aggregate function
원인과 수정된 쿼리를 알려주세요.
핵심은 에러 메시지를 토씨 하나 안 바꾸고 그대로 복사하는 것입니다. "에러 났어요"라고만 하면 AI도 점쟁이가 아닙니다. 영어 메시지를 그대로 붙이면 AI가 정확한 원인을 짚어내고, 보통 한두 번의 왕복 안에 해결됩니다.
이 패턴 하나만 익혀도 "에러 = 끝"이 아니라 "에러 = 다음 질문 거리"로 바뀝니다. 제 경험상 비개발자가 SQL을 포기하는 순간의 80%는 첫 에러 메시지 앞에서입니다. 거기를 넘기면 길이 보입니다.
절대 빼먹으면 안 되는 검증 단계
AI가 SQL을 잘 짜줘도, 그걸 운영 데이터베이스에 바로 돌리면 안 됩니다. 회사 데이터를 다루는 경우 특히 그렇습니다.
- [ ] 읽기 전용(SELECT) 쿼리인지 확인 —
DELETE,UPDATE,DROP이 보이면 일단 멈춥니다 - [ ] 테스트 환경에서 먼저 실행 — 운영 DB 직접 접근은 권한 있는 사람과 상의
- [ ]
LIMIT 10을 붙여서 일부만 먼저 확인 — 결과 형태부터 점검 - [ ] 숫자가 상식적인지 확인 — "월 매출이 0원" 같은 결과가 나오면 의심
- [ ] AI에게 다시 한 번 검토 부탁 — "이 쿼리에 문제가 있는지 다시 봐주세요"
⚠️ AI가 짜준 쿼리에DELETE나UPDATE가 있으면 절대 그냥 실행하지 마세요. 데이터가 사라지면 복구가 어렵거나 불가능합니다. 글 작성 시점 기준으로, AI는 가끔 요청과 다른 수정 쿼리를 만들기도 합니다.
이 다섯 단계는 개발자들도 다 거치는 절차입니다. "AI가 짜줬으니까 맞겠지"가 가장 위험한 생각입니다.
자주 막히는 부분과 해결법
실제로 비개발자분들과 이 패턴을 써보면서 반복적으로 보이는 막힘 지점을 정리해 봅니다.
| 증상 | 원인 | 해결 |
|---|---|---|
| 쿼리가 매번 다름 | 표 구조를 안 알려줌 | DDL 복붙 (프롬프트 1) |
| 결과 숫자가 이상함 | JOIN에서 중복 발생 | "중복 가능성 확인해달라" 추가 요청 |
| 날짜 함수 에러 | DB 종류 안 명시 | "MySQL 8" 등 첫 줄에 명시 |
| 너무 느림 | 인덱스·성능 미고려 | "성능 최적화 관점도 봐달라" 추가 |
| 한국어 컬럼명 깨짐 | 문자셋 이슈 | 영문 컬럼명으로 통일하거나 따옴표 처리 요청 |
세 번째 줄(날짜 함수 에러)이 정말 자주 보입니다. DATE_SUB, DATEADD, INTERVAL 같은 함수가 제품마다 문법이 달라서 그렇습니다. 처음 한 줄에 "MySQL 8.0입니다" 한 마디만 넣어도 거의 사라지는 문제입니다.
마무리
AI sql 쿼리 작성은 코드를 외우는 일이 아니라, 잘 부탁하는 일에 가깝습니다. 표 구조 붙여넣기, 예시 결과 그려주기, 단계별로 쪼개기, 설명·검증 함께 받기, 에러 메시지 그대로 붙이기 — 이 다섯 가지만 손에 익히면 SQL을 한 줄도 안 외우고도 꽤 복잡한 데이터 질문에 답을 얻을 수 있습니다.
다음 단계로는 본인이 자주 쓰는 데이터베이스의 표 구조를 한 번 정리해두는 걸 추천드립니다. 같은 표를 매번 붙여넣을 거라면, 메모장이나 노션에 한 번 적어두고 복사만 하면 되니까요. 그리고 처음 며칠은 AI가 짜준 쿼리를 꼭 한국어 주석과 함께 받아보세요. 두 달쯤 지나면 주석 없이도 SQL이 읽히기 시작합니다(저도 그랬습니다).
'개발 & 기술 > 데이터베이스' 카테고리의 다른 글
| [ORACLE] 오라클 기초 쿼리문 정리 (0) | 2010.06.24 |
|---|