엑셀이 멈췄다... 비전공자가 SQL로 100만 건 데이터 3초 만에 조회한 썰 (SELECT, FROM)

2025. 12. 7. 17:12SQL

반응형

직장인이라면 누구나 한 번쯤 겪어봤을 것이다.
데이터가 조금만 많아져도(약 10만 행 이상?) 엑셀이 버벅거리고, 심하면 '응답 없음'이 뜨면서 강제 종료되는 그 끔찍한 상황을... 😱

나 역시 데이터 분석을 공부하면서 가장 답답했던 게 바로 이 속도 문제였다.
하지만 오늘 SQL의 가장 기초 명령어인 SELECT를 써보고 신세계를 경험했다.
"아, 이래서 현업에서는 엑셀 대신 SQL을 쓰는구나."

오늘은 지난번에 구축한 영화 대여점 데이터(dvdrental)를 활용해, 원하는 데이터를 0.1초 만에 뽑아내는 과정을 기록한다.

1. 쿼리 입력창(Script) 열기: 분석의 시작

스크립트 선택 위치

DBeaver에서 dvdrental 데이터베이스를 선택하고 F3 키를 눌렀다. (상단 메뉴의 📝 아이콘 클릭)

오른쪽에 빈 메모장 같은 화면이 열린다. 이곳이 바로 우리가 엑셀 함수 대신 SQL 명령어를 입력할 공간이다.

2. 모든 데이터 가져오기 (SELECT *): 쾌감의 순간

가장 먼저 고객(`customer`) 테이블에 있는 모든 정보를 보고 싶었다. 문법은 허무할 정도로 간단하다.

"SELECT(가져와라) + FROM(어디서)" 이 두 단어면 끝이다.

SELECT *
FROM customer;
  • SELECT *: 모든 컬럼(열)을 다 보여줘! (*은 All을 의미하는 만능문자)
  • FROM customer: customer 테이블에서.

SELECT * 을 이용해서 데이터 불로오기 성공!

실행 단축키는 Ctrl + Enter. (맥북은 Cmd + Enter도 가능)
실행하자마자 하단 결과창에 수백 명의 고객 정보가 촤라락 쏟아졌다. 엑셀 로딩바와는 차원이 다른 속도다.

3. 원하는 것만 콕 집어 가져오기 (자원 절약)

하지만 SELECT *에는 치명적인 단점이 있다. 데이터가 100만 건, 1000만 건일 때 이걸 쓰면 컴퓨터가 멈출 수도 있다는 것(DB 부하).

💡 비전공자의 깨달음: 뷔페와 주문식의 차이
SELECT *가 뷔페의 모든 음식을 다 퍼오는 거라면, 컬럼 지정은 "딱 먹을 것만 주문하는 것"과 같다.
현업에서는 필요한 데이터만 콕 집어 가져오는 것이 서버 비용을 아끼는 지름길이라고 한다.


그래서 나는 이름(first_name), 성(last_name), 이메일(email)만 딱 골라서 요청했다.

SELECT first_name, last_name, email
FROM customer;

성과 이름 그리고 email 정보만 선택해서 불러오기

필요한 정보만 쏙쏙 골라내니 훨씬 보기가 편하다. 이게 데이터 분석의 첫걸음인 '추출'이다.

4. 상사에게 보고하기 좋게: 별명 붙이기 (AS)

컬럼 이름이 first_name처럼 영어로 되어 있으니 직관적이지 않다.
나 혼자 볼 땐 상관없지만, 상사에게 보고하거나 팀원과 공유할 때는 한글이 편하다. 이때 AS (Alias)를 쓴다.

SELECT first_name AS 이름,
       last_name AS 성,
       email AS 이메일
FROM customer;

AS를 활용해서 항목을 변화시켰다.

와, 컬럼명이 한글로 바뀌어서 나온다!
실제 DB 원본이 바뀌는 건 아니고, 보여주는 화면에서만 '별명'으로 달아주는 거라 부담 없이 써도 된다.

5. 데이터 맛보기 (LIMIT): 안전장치

영화(`film`) 테이블을 열어보고 싶은데, 데이터가 몇 개인지 몰라서 겁이 났다.
이때 쓰는 치트키가 바로 LIMIT(제한)이다. "딱 10개만 먼저 보여줘!"라고 요청하는 것이다.

SELECT *
FROM film
LIMIT 10;

LIMIT을 설정해서 내가 원하는 것 만큼만 불러올 수 있다.

데이터가 100억 개라도 이렇게 하면 0.001초 만에 결과가 나온다. 데이터의 구조를 파악할 때 필수적인 '안전장치'다.

📝 오늘의 문법 요약 (Cheat Sheet)

오늘 실습한 핵심 문법 4가지를 정리해 본다. 이것만 알아도 데이터 조회의 80%는 가능하다!

문법 설명 예시 비고
SELECT "무엇을" 가져올지 지정 SELECT name 콤마(,)로 여러 개 나열 가능
FROM "어디서" 가져올지 지정 FROM customer 테이블 이름 입력
AS 컬럼에 "별명" 붙이기 SELECT name AS 이름 가독성을 높일 때 사용
LIMIT 데이터 개수 "제한" LIMIT 10 쿼리 맨 마지막에 작성

[데이터 분석 독학기 #4 끝]

반응형