SQL은 데이터 직무의 공용어입니다. 분석가든 엔지니어든, 데이터를 다루는 일이라면 거의 예외 없이 SQL로 시작하죠. 처음 보면 외계어 같지만 사실 핵심 문법은 의외로 적고, 영어 문장처럼 위에서 아래로 읽힙니다. 다행히 실무 쿼리의 8할은 SELECT·WHERE·GROUP BY·JOIN 네 가지로 해결됩니다. '뽑고 → 거르고 → 묶고 → 합치는' 흐름으로 이해하면 머릿속에 잘 남습니다.
SELECT, 무엇을 가져올까
가장 기본은 테이블에서 원하는 컬럼을 가져오는 것입니다. SELECT 이름, 나이 FROM 회원 이라고 쓰면 회원 테이블에서 이름과 나이만 가져옵니다. 모든 컬럼이 필요하면 SELECT * 를 씁니다. 컬럼에 보기 좋은 별칭을 붙이고 싶으면 SELECT 나이 AS age 처럼 AS를 쓰면 됩니다.
WHERE, 조건으로 거르기
필요한 행만 골라내는 조건문입니다. WHERE 나이 >= 20 이면 20세 이상만 가져옵니다. 여러 조건은 AND(둘 다)와 OR(둘 중 하나)로 연결하고, 'A 또는 B 또는 C' 같은 경우엔 IN ('A','B','C'), 특정 패턴 검색엔 LIKE, 범위엔 BETWEEN 을 자주 씁니다.
GROUP BY, 묶어서 집계하기
같은 값끼리 묶어 개수·합계·평균을 내는 기능입니다. 예를 들어 SELECT 도시, COUNT(*) FROM 회원 GROUP BY 도시 는 도시별 회원 수를 구합니다. COUNT 외에 SUM(합계), AVG(평균), MAX/MIN도 자주 쓰입니다. 그리고 집계한 결과를 다시 거르고 싶을 때는 WHERE가 아니라 HAVING을 씁니다. 'WHERE는 집계 전 개별 행을, HAVING은 집계 후 결과를 거른다'는 구분만 잡아두면 됩니다.
JOIN, 테이블 합치기
현실의 데이터는 여러 테이블에 나뉘어 있습니다. 이걸 공통 키로 이어 붙이는 게 JOIN입니다. 예를 들어 주문 테이블과 회원 테이블을 '회원ID'로 연결하면 각 주문에 그 회원의 정보를 붙일 수 있죠. 가장 많이 쓰는 둘만 기억하세요. INNER JOIN은 양쪽에 모두 있는 데이터만, LEFT JOIN은 왼쪽 테이블을 기준으로 전부 가져오되 오른쪽에 짝이 없으면 빈 값으로 채웁니다. 실무의 대부분은 이 두 가지로 해결됩니다.
여기까지 익었다면, 그다음은
위 네 가지가 손에 붙으면 ORDER BY(정렬), LIMIT(개수 제한), 서브쿼리(쿼리 안의 쿼리), 그리고 순위를 매기는 윈도우 함수 같은 무기를 하나씩 더해가면 됩니다. 처음부터 욕심내지 말고, 네 가지부터 확실히 자기 것으로 만드는 게 순서입니다.
SQL은 눈으로 읽으면 절대 늘지 않습니다. 브라우저에서 바로 쓰는 무료 SQL 실습 환경을 켜두고, 매일 몇 줄이라도 직접 쳐보세요. 손이 기억하는 순간 실력이 됩니다.
헷갈리기 쉬운 것, 쿼리의 '실행 순서'
초보가 가장 많이 막히는 지점은 문법 자체가 아니라 '쿼리가 어떤 순서로 실행되는가'입니다. 우리는 SELECT를 가장 먼저 쓰지만, 데이터베이스는 SELECT를 거의 마지막에 처리합니다. 실제 실행 순서는 대략 FROM(어디서) → WHERE(거르고) → GROUP BY(묶고) → HAVING(집계 후 거르고) → SELECT(고르고) → ORDER BY(정렬) 순입니다. 이 순서를 알면 자주 만나는 에러가 이해됩니다. 예를 들어 SELECT에서 만든 별칭을 WHERE에서 쓰지 못하는 이유는, WHERE가 SELECT보다 먼저 실행되기 때문이에요. 문법을 외우기 전에 이 흐름부터 머리에 넣어두면 응용이 훨씬 쉬워집니다.
또 하나 자주 하는 실수는 집계 함수와 일반 컬럼을 섞어 쓰는 것입니다. GROUP BY 없이 COUNT(*)와 개별 이름 컬럼을 같이 SELECT하면 원하는 결과가 나오지 않거나 에러가 납니다. '묶은 단위로만 집계가 나온다'는 원칙을 기억하면 이런 혼란을 피할 수 있습니다.
어떻게 연습해야 빨리 늘까
가장 효과적인 방법은 '질문을 정하고 그걸 쿼리로 옮기는' 연습입니다. 예를 들어 회원 데이터가 있다면 '도시별로 가입자가 가장 많은 곳은?', '최근 한 달간 가입한 20대는 몇 명?', '구매를 한 번도 안 한 회원은?' 같은 질문을 스스로 던지고, 그걸 SQL로 바꿔보는 거죠. 처음엔 한 줄짜리 단순 조회부터, 점점 WHERE 조건을 붙이고, GROUP BY로 묶고, JOIN으로 다른 테이블과 연결하는 식으로 난이도를 올립니다. 정답 쿼리를 보고 베끼는 것보다, 막히더라도 스스로 만들어보는 30분이 실력을 훨씬 빨리 키웁니다. 무료 실습 사이트나 공개 데이터셋이 많으니, 매일 질문 세 개씩만 풀어도 한 달 뒤엔 확연히 달라져 있을 거예요.
이걸 배우면 실무에서 뭘 할 수 있나
네 가지 문법이 손에 붙으면 생각보다 많은 일을 할 수 있습니다. '지난달 가장 많이 팔린 상품 10개'를 뽑거나, '신규 가입자의 일별 추이'를 집계하거나, '한 번도 구매하지 않은 회원 명단'을 추려내는 일, 모두 SELECT·WHERE·GROUP BY·JOIN의 조합으로 해결됩니다. 마케터라면 캠페인 성과를, 운영자라면 이용 패턴을, 기획자라면 기능별 사용량을 직접 확인할 수 있게 되는 거죠. 누군가에게 데이터를 요청하고 며칠씩 기다릴 필요 없이, 궁금한 걸 스스로 그 자리에서 꺼내 보는 힘이 생깁니다.
그래서 SQL은 데이터 직무 지망생만의 도구가 아닙니다. 숫자로 일하는 거의 모든 직무에서 '데이터를 직접 다룰 줄 아는 사람'은 점점 더 귀해지고 있습니다. 이 네 가지부터 시작해, 막히면 검색하고 다시 쳐보는 과정을 반복하다 보면 어느새 데이터가 무섭지 않게 됩니다.
자주 묻는 질문
WHERE와 HAVING은 뭐가 다른가요?
INNER JOIN과 LEFT JOIN의 차이는요?
SQL 종류가 많던데 뭘 배워야 하나요?
출처 · 참고
- SQL 표준 문법에 대한 일반적 설명