
1. 직장인 데이터 분석의 첫 단추, SQL
최근 기업 경영 전반에서 ‘데이터 리터러시(Data Literacy)’와 ‘데이터 기반 의사결정(Data-Driven Decision Making)’의 중요성이 부각되면서, 부서를 불문하고 수많은 직장인이 데이터 분석 도구 학습에 뛰어들고 있습니다. 파이썬(Python)이나 알(R) 같은 훌륭한 오픈소스 프로그래밍 언어도 존재하지만, 대기업, 금융권, 대형 이커머스 등 데이터의 체급이 큰 비즈니스 환경에 속한 직장인이라면 가장 먼저 맞닥뜨리는 벽이자 가장 강력한 무기가 되는 것은 단연 SQL(Structured Query Language, 구조화 질의어)입니다.
SQL은 관계형 데이터베이스 관리 시스템(RDBMS)에 저장된 데이터를 조회하고 관리하기 위해 위해 고안된 특수 목적의 표준 언어입니다. 흔히 ‘코딩’이라고 하면 복잡한 논리 구조와 알고리즘을 설계하는 과정을 떠올리기 쉽지만, SQL은 “데이터베이스야, 내가 원하는 조건의 테이블에서 특정 칼럼만 골라서 요약해 줘”라고 선언적으로 소통하는 방식을 취합니다.
이러한 특성 덕분에 컴퓨터 공학을 전공하지 않은 비전공자나 문과 출신의 기획자, 마케터들도 비교적 수월하게 진입할 수 있는 영역으로 평가받고 있습니다. 본 연작 시리즈를 시작하며, 왜 우리가 업무에서 널리 쓰이는 엑셀을 넘어 SQL을 배워야 하는지 객관적인 사실과 현업 사례를 바탕으로 깊이 있게 짚어보겠습니다. 참고로 본 연작 시리즈에서 다루는 모든 쿼리와 세부 문법은 대용량 데이터 처리에 널리 활용되는 테라데이터(Teradata) SQL을 기준으로 설명합니다. (※ 본 시리즈는 Teradata SQL을 기준으로 설명하지만, 대부분의 내용은 Oracle, MySQL, SQL Server 등에서도 공통적으로 적용됩니다.)
2. 현업 비즈니스 사례로 보는 엑셀(Excel)의 구조적 한계
현업 직장인들에게 가장 친숙하고 위대한 데이터 도구는 단연 마이크로소프트의 엑셀(Excel)입니다. 화면에 셀 단위로 데이터가 직관적으로 노출되며, 마우스 클릭 몇 번으로 피벗 테이블을 만들고 수식을 적용할 수 있다는 독보적인 장점을 지니고 있습니다. 그러나 다루어야 할 데이터의 규모가 기업형 스케일로 커지기 시작하면, 엑셀은 도구 자체의 설계적 한계로 인해 업무 프로세스의 병목 구간이 되곤 합니다. 이해를 돕기 위해 국내 대형 유통 기업의 마케팅 팀에서 흔히 발생할 수 있는 가상의 비즈니스 사례를 살펴보겠습니다.
[실무 사례 예시: 마케팅 팀 김 대리의 고민]
H 유통사 마케팅 팀의 김 대리는 이번 분기 ‘VIP 고객 대상 타겟 프로모션’을 기획하라는 지시를 받았습니다. 타겟 대상자를 추출하기 위해 IT 부서 시스템에서 ‘최근 1개년 전체 고객 구매 이력 데이터’를 내려받았습니다.
하지만 파일 확장자가 CSV인 대용량 파일을 엑셀로 열려고 하자, “파일이 완전히 로드되지 않았습니다”라는 경고 창이 뜬 채 데이터가 잘려 나갔습니다. 간신히 데이터를 쪼개어 연 후, 특정 구매 금액 이상인 고객의 정보를 매칭하기 위해
VLOOKUP함수를 입력하자 엑셀 창이 ‘응답 없음’ 상태로 멈춰 서버렸고, 결국 한 시간 동안 작업한 내용이 손실되는 상황을 겪었습니다.
김 대리가 겪은 상황은 엑셀을 다루는 직장인들에게 매우 흔한 일이며, 이는 엑셀이 가진 다음과 같은 하드웨어 및 소프트웨어적 메커니즘 한계에서 기인합니다.
- 물리적 행(Row) 수의 제한: 엑셀 시트 한 장이 수용할 수 있는 최대 행의 수는 정확히
1,048,576개로 제한되어 있습니다. 대형 이커머스나 배달 앱, 금융사의 경우 단 하루 혹은 단 몇 시간 만에 수백만 건의 트랜잭션(거래 로그)이 쌓이기 때문에, 엑셀은 물리적으로 이 데이터를 한 화면에 온전히 담아낼 수 없습니다. - 인메모리(In-Memory) 연산 방식의 리소스 고갈: 엑셀은 대용량 데이터를 주기억장치(RAM)를 중심으로 처리하는 구조이므로, 데이터가 수십만 건 이상으로 증가하거나 복잡한 수식·피벗 테이블·VLOOKUP/XLOOKUP 등의 연산이 많아질수록 메모리 사용량이 크게 증가합니다. 이로 인해 PC 성능에 따라 응답 속도가 급격히 저하되거나 프로그램이 멈추는 등 성능 저하가 발생할 수 있습니다.
- 데이터 무결성(Integrity) 확보의 어려움: 엑셀은 셀 단위로 수식과 값을 사람이 직접 수정할 수 있기 때문에, 협업 과정에서 누군가 실수로 수식을 지우거나 텍스트를 잘못 입력해도 이를 원천적으로 차단하거나 추적하기가 어렵습니다.
반면 SQL은 이러한 한계를 근본적으로 해결하는 대안으로 꼽힙니다. SQL은 대부분의 필터링, 집계, 정렬 등의 연산을 데이터베이스 서버에서 수행하며, 사용자는 필요한 결과만 조회하도록 쿼리를 작성합니다. 데이터가 안전하게 저장되어 있는 거대한 데이터베이스 서버 안에서 모든 연산(필터링, 그룹화, 정렬 등)을 수행하도록 지시한 뒤, 사용자는 오직 최종적으로 요약된 결과물(가령 ‘VIP 고객 5,000명의 명단’이라는 가벼운 텍스트 결과)만을 네트워크를 통해 전달받기 때문입니다. 이로 인해 적절한 데이터 모델과 튜닝이 이루어진 환경에서는 수억 건 이상의 데이터도 효율적으로 처리할 수 있습니다.
3. SQL과 데이터베이스의 작동 원리 이해하기
SQL을 제대로 활용하기 위해서는 이 언어가 데이터베이스 시스템 내부에서 어떻게 작동하는지 대략적인 메커니즘을 이해하는 것이 도움이 됩니다. 우리가 작성한 쿼리문은 단순히 텍스트에 불과하지만, 데이터베이스에 전달되는 순간 다음과 같은 정밀한 단계를 거치게 됩니다.
1) 구문 분석 (Parsing)
사용자가 SQL 문을 작성하여 실행하면, 데이터베이스의 ‘파서(Parser)’가 가장 먼저 문법적인 오류가 없는지 검사합니다. 명령어의 철자가 올바른지, 조회하려는 테이블과 칼럼이 실제로 데이터베이스 내에 존재하는지 권한을 체크하는 단계입니다.
2) 최적화 (Optimization)
구문 분석이 끝나면 데이터베이스의 두뇌에 해당하는 ‘옵티마이저(Optimizer)’가 작동합니다. 옵티마이저는 사용자가 요청한 데이터를 가장 적은 자원(CPU, 디스크 I/O)을 사용하여 빠르게 찾아낼 수 있는 여러 가지 경로를 계산합니다. 어떤 인덱스를 먼저 사용할지, 테이블들을 어떤 순서로 결합(Join)할지 결정하여 최적의 ‘실행 계획(Execution Plan)’을 수립하는 아주 중요한 단계로 알려져 있습니다.
3) 실행 및 결과 반환 (Execution)
최적화된 실행 계획에 따라 데이터베이스 엔진이 디스크나 메모리에서 실제 데이터를 찾아내고, 필터링이나 집계 연산을 수행한 뒤 최종 결과 집합(Result Set)을 사용자의 화면에 전달합니다. 대용량 데이터를 다루는 환경일수록 이 최적화 단계가 정교하게 맞아떨어져야 서버의 부하를 줄일 수 있습니다.
4. 팩트 체크 및 데이터 분석가의 관점 점검
기술 콘텐츠의 신뢰성을 높이기 위해, 초보 분석가들이 흔히 오해하기 쉬운 몇 가지 기술적 사실(Fact)을 명확히 짚고 넘어가겠습니다.
- SQL은 프로그래밍 언어인가?
- 팩트 체크: 엄밀히 말해 SQL은 C언어나 자바, 파이썬과 같은 범용 프로그래밍 언어(General-Purpose Language)와는 결을 달리합니다. 제어문이나 반복문을 자유롭게 구사하여 독립된 소프트웨어를 만드는 언어가 아니라, 데이터베이스 시스템과 대화하기 위해 규정된 ‘질의 언어(Query Language)’에 가깝습니다. 다만 최근의 SQL 표준에는 절차적 처리가 가능한 절차형 SQL 기능이 포함되어 있어 프로그래밍 언어적 속성도 일부 공유하고 있습니다.
- SQL을 알면 모든 데이터베이스를 다 다룰 수 있는가?
- 팩트 체크: 전 세계 대부분의 관계형 데이터베이스는 ANSI와 ISO에서 표준화한 SQL 표준을 기반으로 하고 있으므로 기본적인 문법과 개념은 공통적으로 적용됩니다. 그러나 Oracle, MySQL, SQL Server, 그리고 본 시리즈의 기준인 Teradata 등 각 DBMS는 고유의 확장 문법(Dialect)과 특화된 내장 함수를 제공합니다. 따라서 표준 SQL을 익혔다면 다른 DBMS도 비교적 쉽게 적응할 수 있지만, 새로운 환경에서는 해당 시스템의 고유 문법과 성능 최적화 방식은 추가로 학습할 필요가 있습니다.
5. 결론 및 다음 화 예고
SQL은 현대 비즈니스 환경에서 데이터를 다루는 직장인이 시스템과 소통하기 위해 갖춰야 할 가장 기본적인 핵심 언어입니다. 특히 데이터의 물리적 한계와 PC의 성능 제약을 뛰어넘어, 수억 건의 데이터 속에서 내가 원하는 비즈니스 인사이트를 정밀하게 추출할 수 있는 독보적인 효율성을 제공합니다.
본 20부작 연작 시리즈의 다음 장인 2화에서는 테라데이터 SQL 문법의 가장 첫걸음이자 모든 데이터 추출의 근간이 되는 SELECT, FROM, WHERE 구문을 본격적으로 다룹니다. 특히, 실무 데이터 분석 과정에서 수억 건짜리 거대한 원천 테이블을 무턱대고 조회하다가 서버에 불필요한 부하를 주는 상황을 방지하기 위해 현직 분석가들이 주로 사용하는 테라데이터 전용 샘플링 문법의 정체와 효율적인 필터링 조건을 실무 예제와 함께 상세히 파악해 보겠습니다.