
솔직히 저는 SQL이 개발자들만 쓰는 언어인 줄 알았습니다. 매달 말 마케팅팀 요청이 쌓일 때마다 데이터팀 눈치를 보면서 기다리던 시간이 꽤 길었어요. 그러다 퇴근 후 한 시간짜리 SQLZOO 연습이 그 흐름을 완전히 바꿔놨습니다. SELECT, WHERE, GROUP BY 세 가지만 익혀도 반복 보고서의 80%는 직접 처리할 수 있다는 게 저도 처음엔 믿기지 않았는데, 2주 만에 실제로 확인했습니다.
업무 자동화가 절실해진 순간
매달 말이면 같은 상황이 반복됐습니다. 마케팅팀에서 "이번 달 신규 가입자 수랑 결제 전환율 뽑아줄 수 있어요?"라는 메시지가 오면, 저는 데이터팀에 요청 티켓을 올리고 기다려야 했습니다. 짧으면 반나절, 바쁜 시기엔 이틀. 급한 보고 자료인데 순서를 기다리는 건 꽤 답답한 일이었어요.
더 문제는 막상 받은 데이터가 제가 원하던 조건과 조금 달라서 다시 요청하는 상황이었습니다. "이번엔 기간을 지난달 1일부터 말일까지로 바꿔주실 수 있을까요?" 같은 재요청이 반복되면, 데이터팀도 저도 서로 지치기 마련입니다.
그러다 사내 스터디에서 이런 이야기를 들었습니다. SELECT, WHERE, GROUP BY만 알아도 자주 쓰는 리포트의 80%는 직접 뽑을 수 있다고요. 여기서 SELECT란 데이터베이스 테이블에서 원하는 컬럼(열)을 골라 가져오는 명령어입니다. 쉽게 말해 "이 표에서 이 항목만 보여줘"라고 지시하는 가장 기본적인 SQL 문법이죠. WHERE는 조건 필터링, GROUP BY는 특정 기준으로 데이터를 묶어 집계할 때 씁니다.
저는 그날 저녁 바로 SQLZOO에 접속했습니다. 브라우저에서 바로 쿼리를 입력하고 결과를 확인할 수 있는 구조라 진입 장벽이 낮았고, 설치할 것도 없었어요. 처음 며칠은 SELECT와 WHERE 조합만 반복했는데, 생각보다 금방 손에 익었습니다.
- SELECT: 테이블에서 필요한 컬럼만 가져오는 기본 명령어
- WHERE: 조건을 지정해 원하는 행(row)만 필터링하는 절
- GROUP BY: 특정 기준으로 데이터를 묶고 COUNT, SUM 같은 집계 함수와 함께 사용
- JOIN: 두 개 이상의 테이블을 연결해 하나의 결과로 합치는 방법
데이터 문해력, 어디까지가 현업의 몫인가
2주 정도 지나니 간단한 매출 집계나 사용자 수 조회는 데이터팀 도움 없이 직접 처리할 수 있게 됐습니다. 요청-대기 시간이 사라지니 보고서 작성 속도가 눈에 띄게 달라졌어요. 이걸 경험하고 나서 "SQL을 배우면 데이터팀이 필요 없어지는 것 아니냐"는 생각이 잠깐 들기도 했는데, 그건 완전히 틀린 판단이었습니다.
제가 직접 써봤는데, 초기에 만든 리포트에서 JOIN 조건을 잘못 잡아 매출이 두 배로 부풀려진 적이 있었습니다. JOIN이란 두 개 이상의 테이블을 특정 키(key) 값을 기준으로 연결해 하나의 결과로 합치는 SQL 문법입니다. 쉽게 말해 "주문 테이블"과 "회원 테이블"을 회원 ID로 연결해서 "누가 무엇을 샀는지" 한 번에 보는 방식이죠. 그런데 조인 조건을 잘못 설정하면 데이터가 카르테시안 곱(Cartesian Product), 즉 모든 행이 서로 곱해지는 방식으로 중복 집계돼 숫자가 실제보다 크게 불어납니다. 그 리포트는 데이터팀 검수를 거치고 나서야 문제를 발견했습니다.
그 경험 이후 저는 SQL 학습을 다르게 정의하게 됐습니다. 데이터팀을 대체하는 능력이 아니라, 데이터팀과 제대로 대화할 수 있는 최소한의 데이터 문해력(Data Literacy)을 갖추는 것. 여기서 데이터 문해력이란 데이터를 읽고, 해석하고, 질문을 던질 수 있는 기초 역량을 의미합니다. 전문 분석가처럼 모델링까지 할 필요는 없고, "이 숫자가 왜 이렇게 나왔는지"를 스스로 한 번 짚어볼 수 있는 수준이면 충분합니다.
W3Schools SQL Tutorial에서는 기본 문법을 단계별로 확인할 수 있고, 실제로 저도 JOIN 개념을 다시 정리할 때 이 사이트의 예제를 여러 번 참고했습니다. 문법 레퍼런스로 옆에 열어두기 좋은 곳입니다.
실무 적용, 온라인 강의만으로는 부족한 이유
SQLZOO나 W3Schools에서 배운 문법이 실무에서 그대로 통하지 않는 경우가 종종 있습니다. 제 경험상 이건 좀 다릅니다. 온라인 실습 환경은 깔끔하게 설계된 예제 테이블을 씁니다. 컬럼 이름도 직관적이고, 데이터도 가공돼 있어요. 반면 실제 회사 데이터베이스(DB)는 테이블 네이밍 규칙부터 다릅니다.
예를 들어 회원 테이블이 "users"가 아니라 "tb_mbr_info"처럼 사내 규칙을 따르는 경우가 많고, 특정 컬럼에 어떤 값이 들어가는지는 스키마(Schema)를 봐야 알 수 있습니다. 스키마란 데이터베이스 테이블의 구조를 정의한 설계도로, 어떤 컬럼이 있고 각 컬럼에 어떤 타입의 데이터가 들어오는지를 명시한 문서입니다. 이 스키마를 모르면 SELECT를 아무리 잘 써도 엉뚱한 컬럼을 가져오거나 조건을 잘못 달 수 있습니다.
그래서 저는 지금도 Redash나 Metabase 같은 BI(Business Intelligence) 툴의 쿼리 히스토리와 사내 데이터 위키를 병행해서 씁니다. BI 툴이란 비개발자도 데이터베이스에 쿼리를 날리고 결과를 시각화할 수 있도록 만든 분석 인터페이스입니다. 기존에 데이터팀이 만들어 둔 쿼리를 열어보면 실제 테이블 구조와 네이밍 규칙을 한 번에 파악할 수 있어서, 처음 실무 쿼리를 짤 때 최고의 레퍼런스가 됩니다.
한국어로 SQL 기초를 다지고 싶다면 생활코딩 데이터베이스 강좌가 꽤 유용합니다. 개념 설명이 친절하고 실습 예제도 충분해서, 처음 SQL을 접하는 분이라면 여기서 기반을 잡고 SQLZOO로 연습량을 채우는 순서를 권합니다. 저도 초반에 이 순서로 진행했고, 이후에 사내 문서와 대조하면서 실무 감각을 올렸습니다.
자주 묻는 질문
Q. 비개발자도 SQL을 실무에서 쓸 수 있나요?
A. 충분히 가능합니다. SELECT, WHERE, GROUP BY 세 가지만 익혀도 반복적인 매출 집계나 사용자 수 조회 같은 리포트는 직접 처리할 수 있습니다. 저도 개발 배경 없이 퇴근 후 2주 연습으로 간단한 보고서를 직접 뽑기 시작했습니다. 단, 처음에는 데이터팀 검수를 꼭 받는 게 좋습니다.
Q. SQL 독학, 어디서 시작하면 되나요?
A. 한국어로 개념을 먼저 잡으려면 생활코딩 데이터베이스 강좌가 좋고, 실습 반복은 SQLZOO가 효과적입니다. 문법 레퍼런스로는 W3Schools SQL Tutorial을 옆에 열어두면 편합니다. 개념 → 반복 실습 → 사내 실무 쿼리 분석 순서로 진행하면 가장 빠르게 실력이 붙습니다.
Q. JOIN을 쓰다가 숫자가 이상하게 나오는 건 왜 그런가요?
A. JOIN 조건을 잘못 설정하면 카르테시안 곱이 발생해 데이터 행이 의도보다 훨씬 많이 생성됩니다. 이때 SUM이나 COUNT 같은 집계 함수를 쓰면 숫자가 실제보다 크게 부풀려집니다. 저도 처음 만든 매출 리포트에서 이 실수를 한 적 있는데, 조인 키가 1:N 관계인지 N:N 관계인지를 먼저 확인하는 습관을 들이면 이런 실수를 많이 줄일 수 있습니다.
Q. 온라인 강의에서 배운 문법을 회사 DB에 바로 쓸 수 있나요?
A. 문법 자체는 대부분 통하지만, 테이블 이름과 컬럼 구조는 회사마다 다릅니다. 실무에 처음 적용할 때는 사내 데이터 위키나 Redash, Metabase 같은 BI 툴에 저장된 기존 쿼리를 먼저 읽어보는 게 훨씬 빠릅니다. 스키마 구조를 파악하지 않은 채 쿼리를 짜면 엉뚱한 결과가 나올 수 있습니다.
결론
SQL을 배우고 나서 가장 크게 달라진 건 속도가 아니라 자신감이었습니다. 데이터팀에 요청 메시지를 보내기 전에, 제가 원하는 게 정확히 무엇인지 쿼리로 먼저 써볼 수 있게 됐거든요. 그러다 보니 요청 자체가 훨씬 구체적이 됐고, 데이터팀과의 소통도 빨라졌습니다.
다만 SELECT부터 시작해서 JOIN까지 익히는 과정에서 실수는 반드시 납니다. 저도 매출이 두 배로 부풀려진 리포트를 만들었고, 그 경험이 오히려 데이터 구조를 꼼꼼히 보는 습관을 만들어줬습니다. SQL을 "데이터팀 대체 도구"가 아니라 "데이터팀과 협업하는 언어"로 접근하면, 배우는 속도도 빠르고 실수 이후 회복도 훨씬 부드럽습니다. 처음 시작한다면 오늘 저녁 SQLZOO 한 챕터부터 열어보는 걸 권합니다.
'IT적응기' 카테고리의 다른 글
| VPS 서버 세팅 (초기보안, 도메인연결, SSL인증서) (0) | 2026.07.12 |
|---|---|
| zsh·tmux로 터미널 바꾸기 (자동완성, 세션유지, dotfiles) (0) | 2026.07.11 |
| Docker 입문 (환경 차이, 컨테이너, 온보딩) (0) | 2026.07.10 |
| 개발자 책상 셋업 (듀얼 모니터, 모니터암, 의자) (0) | 2026.07.09 |
| 스마트 플러그 후기 (대기전력, 누진제, 절전효과) (0) | 2026.07.08 |