오늘 방문 /누적 방문 /완성한 레슨 소개 ↗
SECONDTEAM
데이터·DB
🗄️ 레슨

SQL 맛보기 — Claude가 짜고 나는 읽는다

SELECT 한 줄 정도는 읽을 수 있어야 AI가 짠 쿼리를 검토하죠. 쓰기 말고 읽기 위주로.

① 오늘의 미션
장부에게 말을 거는 법
지난 레슨에서 우리 가게의 주문 장부(orders 테이블)가 행과 열로 정리된 걸 봤어요. 그런데 그 장부에서 "김치전 주문만 뽑아줘"라고 하려면, 장부가 알아듣는 말로 부탁해야 해요.

그 언어가 바로 SQL이에요. 오늘 목표는 딱 하나 — SQL을 직접 쓰는 게 아니라, Claude가 짠 SQL을 '읽고 검토'할 줄 아는 것. 쓰는 건 AI가, 검수는 내가.

설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
~/my-shop
$ _
📚 「SQL 맛보기 — Claude가 짜고 나는 읽는다」 레슨 내용 전체 텍스트로 훑어보기
장부에게 말을 거는 법
지난 레슨에서 우리 가게의 주문 장부(orders 테이블)가 행과 열로 정리된 걸 봤어요. 그런데 그 장부에서 "김치전 주문만 뽑아줘"라고 하려면, 장부가 알아듣는 말로 부탁해야 해요.

그 언어가 바로 SQL이에요. 오늘 목표는 딱 하나 — SQL을 직접 쓰는 게 아니라, Claude가 짠 SQL을 '읽고 검토'할 줄 아는 것. 쓰는 건 AI가, 검수는 내가.

SQL(Structured Query Language, '시퀄' 또는 '에스큐엘'이라 읽어요)은 오직 한 가지 목적을 위한 언어예요 — 데이터베이스와 대화하기.

감 잡는 한 줄
내가 SQL 한 줄을 쓰면 → 장부(DB)가 읽고 → 결과를 돌려줘요.
명령은 딱 네 개만 알면 돼요: SELECT(읽기) · INSERT(추가) · UPDATE(수정) · DELETE(삭제).

놀라운 점은 — 복잡한 문법을 외울 필요가 없다는 거예요. 기본 SQL은 거의 영어 문장처럼 읽혀요. 직접 보면 압니다.

우리 가게 주문 장부에 이런 SQL을 보냈어요 — SELECT * FROM orders WHERE menu='김치전'. 무슨 뜻일까요?
정답! 거의 영어 그대로예요. SELECT *(전부 골라) FROM orders(주문 장부에서) WHERE menu='김치전'(메뉴가 김치전인 것만). 추가도 삭제도 아닌 — 그냥 읽어서 보여달라는 부탁이에요.

아까 그 줄을 조각조각 끊으면 외울 게 없어요. 영어 단어 그대로니까요.

SELECT * FROM orders WHERE menu='김치전'
· SELECT * — "전부 골라줘" (별표는 '모든 열')
· FROM orders — "orders(주문) 장부에서"
· WHERE menu='김치전' — "단, 메뉴가 김치전인 줄만"

여기서 가장 중요한 부분이 WHERE예요 — '어떤 줄에만'을 정하는 조건. 이 한 단어가 있느냐 없느냐가, 잠시 뒤 큰 사고를 가릅니다.

"음료 주문만 보여줘"를 SQL로 하면? '어떤 줄만'을 정하는 조건 단어가 빠졌어요. 채워보세요.

정답은 WHERE예요. WHERE 뒤에 조건을 붙이면 '전부'가 아니라 '그 줄만' 골라져요. WHERE를 빼면? — '전부'가 돼버립니다. 기억해두세요.

SQL은 우리가 외워서 쓰는 게 아니라 Claude에게 부탁하면 돼요. 가게 폴더에서 Claude를 켜고 말로 시켜봐요.

우리 orders 테이블에서 김치전 주문만 골라 보고 싶어. SQL 한 줄로 만들어주고, 한 조각씩 무슨 뜻인지도 알려줘 — 원하는 걸 한국어로 말하면 SQL로 바꿔줘요
보셨죠? 쓰는 건 Claude, 읽고 고개 끄덕이는 건 나. 이게 오늘의 핵심 자세예요.

SELECT가 '읽기'였다면, 장부를 바꾸는 명령은 셋이에요. 외우지 말고 '읽을 줄'만 알면 돼요.

한 줄씩
· INSERT — 새 줄 추가: INSERT INTO orders (menu) VALUES ('떡볶이') → 떡볶이 주문 한 줄 생김
· UPDATE — 기존 줄 수정: UPDATE orders SET menu='제육볶음' WHERE id=3 → 3번 주문의 메뉴를 바꿈
· DELETE — 줄 삭제: DELETE FROM orders WHERE id=3 → 3번 주문을 지움

눈치챘나요? UPDATE와 DELETE에도 WHERE가 붙어 있어요. '어느 줄을' 바꾸고 지울지 정하는 거죠. 그런데 만약 이게 빠지면…

Claude가 실수로 이렇게 짰어요 — DELETE FROM orders (WHERE가 없어요!). 이걸 실행하면?

맞아요, 전부 삭제예요. WHERE가 없으면 '모든 줄'이 대상이 되거든요. 김치전·콜라·떡볶이… 우리 가게 주문 기록이 통째로 사라집니다. DELETE와 UPDATE에 WHERE가 있는지가 검수 1순위인 이유예요.
Claude가 '3번 주문 메뉴를 제육볶음으로 바꿔줘'라는 부탁에 아래 셋 중 하나를 짰어요. 어떤 게 위험한 쿼리일까요?
위험한 건 두 번째 — WHERE가 없는 UPDATE예요. 이러면 3번뿐 아니라 모든 주문의 메뉴가 제육볶음으로 덮어써져요! 첫 번째는 id=3만 바꾸니 안전, 세 번째는 그냥 읽기라 안전. '바꾸는 명령(UPDATE/DELETE)에 WHERE가 있나?' — 이 한 가지만 봐도 절반은 막아요.

내가 SQL을 못 읽어도 괜찮아요. Claude에게 검토를 부탁할 수 있거든요. 의심스러운 쿼리는 실행 전에 꼭 물어봐요.

이 쿼리 실행해도 안전해? DELETE FROM orders — 우리 가게 주문 장부에 쓸 거야 — 실행하기 전에 위험 여부를 먼저 묻는 습관
이렇게 실행 전에 한 번 묻는 습관이 가게 데이터를 지켜요. AI도 실수하니까, 마지막 확인은 항상 내 몫.
오늘 배운 '나는 검수자' 자세를 작업 순서로 정리하면?
핵심은 3번 — UPDATE·DELETE를 보면 WHERE부터 찾는 버릇이에요. 이 순서면 AI가 짠 쿼리도 안심하고 쓸 수 있어요.
한 줄로
SQL은 장부(DB)에게 거는 영어 같은 말SELECT(읽기)·INSERT(추가)·UPDATE(수정)·DELETE(삭제). 쓰는 건 Claude, 읽고 검수하는 건 나. 특히 UPDATE·DELETE에 WHERE가 있는지만 봐도 큰 사고를 막아요.
다음 레슨에서
그런데 이 장부는 지금 어디 있죠? 내 노트북 안에만 있으면 가게 문 닫으면 사라져요. 다음 레슨 'Supabase — 진짜 DB 빌려쓰기'에서, 클라우드에 진짜 장부를 빌려 우리 가게 데이터를 안전하게 모셔봅니다. 가게는 계속 자랍니다. 🌱