[How-to] 개발자는 아니어도 SQL은 하고싶어

by 엠디언니

SQL(Structured Query Language)은 조직 내에 축적되고 있는 데이터베이스를 관리할 때, 그리고 그중에 필요한 데이터를 검색하고 추출할 때 사용하는 프로그래밍 언어 중 하나입니다. 데이터베이스 시스템에 '이 데이터 테이블을 생성해 줘' '이 조건에 맞는 데이터를 추출해 줘'와 같이 사용자가 원하는 결과를 요청(질의)하는 언어이기 때문에 쿼리 언어(Query Language)라고 불러요.

많은 기업들이 SQL을 사용하는 데이터베이스 시스템, 예를 들어 MySQL이나 오라클, MS SQL Server 등을 쓰고 있기 때문에 한 번 익혀두면 어디에서든지 유용하게 활용할 수 있는 기술입니다.


여러분이 이제 실무에서 데이터를 점점 더 적극적으로 활용하고 다루다 보면, 어떤 문제를 해결하기 위해 분석해보고 싶은 데이터가 있지만 이미 만들어져 있는 대시보드나 쿼리에서는 찾기가 어려울 때가 종종 있습니다. 특히 마케터, 상품기획자와 같은 비개발직군에서 상품 단위 - 가장 세부적인 단위 - 의 지표 분석을 하는 경우, 카테고리별 고객 데이터나 주문 데이터를 분석해야 할 경우에는 원하는 수준의 자세한 데이터를 볼 수 없을 때가 많아요.

그럼 데이터팀이나 개발자에게 쿼리를 만들어달라고 하거나, 쿼리 결과를 기반으로 한 대시보드를 만들어달라고 해야 합니다. 하지만 안타깝게도 이렇게 요청했을 때 우리가 기대하는 완성 속도에 비해서 훨씬 느리거나, 개발자들과 비개발자인 우리의 커뮤니케이션 오류로 인해 요청사항이 잘못 반영되어 다시 수정해야 하는 상황이 발생하기도 하죠.

이런 일이 반복되면 점점 "내가 직접 데이터를 뽑아서 분석하고 싶다" "분석하고 싶을 때 바로 데이터를 추출하고 싶다"는 욕심이 생길 수밖에 없습니다.


하지만 보통 SQL은 개발자의 영역, 전공자의 전문기술이라고 생각하기 쉽다 보니 이런 욕심이 생겨도 실천에 옮기기가 어려워요. 그런데 사실 SQL은 비개발직군도, 비전공자도 충분히 접근해 볼 수 있는 언어입니다. 데이터를 데이터베이스에서 가져오는 문법이 있는 것을 제외하면, 엑셀의 함수와도 비슷한 개념이 많습니다. SQL의 기본적인 문법 몇 가지만 예시와 함께 살펴볼까요?




1. SELECT: 데이터 가져오기

지수가 본인을 'select 밖에 모르는 바보'라고 했던 것 기억하시나요? 그만큼 SELECT 문법은 SQL을 공부할 때 가장 먼저 알아야 하는, 기본 중에 기본입니다. 기본이라고 무시하면 안 됩니다. 이것만 써도 여러분이 원하는 데이터를 얻기에 부족함이 없어요.


SELECT 열 1, 열 2
FROM 테이블명


원하는 데이터가 있는 테이블에서 열 1과 열 2만 불러오는 문법입니다. 여기에서 '테이블'은 실시간으로 데이터가 데이터베이스 시스템에 차곡차곡 쌓여나갈 때, 서로 관련 있는 것들끼리 모아서 적재될 수 있게 개발자들이 데이터베이스 상에 미리 구역을 정해놓은 것이라고 생각하시면 좋습니다. 온라인 쇼핑몰이라면 주문번호부터 주문일자, 주문자명, 주문내역 등의 데이터를 모으고 있는 '주문테이블'은 당연히 있겠죠? 그리고 기업체라면 사번, 이름, 입사일자, 부서명 등의 데이터가 쌓이고 있는 '직원테이블'이 당연히 있을 거예요.


SELECT name, age
FROM employees


"직원테이블(employees)에서 이름(name)과 나이(age)를 추출해 줘"라는 의미가 됩니다. 데이터가 필요한데 SELECT밖에 모른다면, 일단 이렇게 추출해서 필요한 데이터를 (경우에 따라서는 엄청난 크기의) 다운로드한 뒤 나에게 익숙한 엑셀 환경에서 작업해도 문제없습니다.


2. WHERE: 조건 달기

위의 예시에서 10명의 조그만 신생 회사라면 10명에 대한 이름과 나이만 추출이 됩니다. 여기에서 필요한 내용을 찾는 건 어렵지 않을 거예요. 하지만 우리 회사 직원이 1,000명이라면? 1,000행의 데이터가 추출됩니다. 이때 1,000행의 데이터를 엑셀로 다운로드해서 분석해도 되지만, 내가 보고 싶은 데이터가 "우리 회사의 30세 미만 직원이 몇 명이지?"로 명확하게 정해져 있다면 SQL 상에서 이 데이터로 한정 지어 추출하는 것이 더 빠르고 편하겠죠.


SELECT name, age
FROM employees
WHERE age < 30


SELECT ~ FROM 구문 뒤에 WHERE를 붙이면 WHERE 이후의 조건에 해당하는 데이터만 추출됩니다. 엑셀에서 나이 30세 미만 직원으로 필터링을 하는 것과 같은 기능이에요.


3. COUNT: 개수 세기

알고 싶은 데이터는 "우리 회사의 30세 미만 직원이 몇 명이지?"이기 때문에, WHERE 조건으로 필요한 데이터만 추출했더라도 직원 수는 따로 다시 세어봐야 합니다. 하지만 COUNT를 활용하면 처음부터 직원 수를 집계한 숫자만 확인할 수 있습니다.


SELECT COUNT(age)
FROM employees
WHERE age < 30


COUNT는 정확히 말하면 '추출된 행'의 개수를 세는 기능입니다. 30세 미만인 직원의 나이 열을 추출하고 추출된 행의 개수를 계산해 달라는 의미입니다. 각 직원마다 행이 구분되므로 30세 미만 직원이 몇 명인지 바로 알 수 있겠죠?




어때요. SQL은 어떻게 쓰는 건지 조금 느낌이 오시나요? 데이터 창고의 문지기에게 "데이터를 가져와줘 (SELECT)"라는 부탁을 하고 있는데 "이 조건에 맞는 (WHERE) 데이터를 가져와줘 (SELECT)" 또는 "이 조건에 맞는 (WHERE) 데이터를 A 값 기준 내림차순으로 정렬해서 (ORDER BY) 가져와줘"처럼 점점 구체적으로 요청하는 대화를 하고 있다고 생각하시면 좋습니다. 언어와 문법만 알고 있으면 대화는 누구나 할 수 있어요.


SQL을 다루는 역량을 손에 쥔 순간부터, 우리 업무 속도와 데이터 기반의 의사결정 속도는 훨씬 더 빨라집니다. 데이터팀에게 일일이 요청하지 않아도 필요할 때 바로 데이터를 확보할 수 있고, 확인할 수 있는 데이터가 없어서 깊이 있게 분석하지 못해 해결하지 못한 문제들도 실마리를 찾을 수 있게 돼요.


이뿐만이 아닙니다. 최근 마케터, 기획자와 같은 비개발직군 경력직 채용 공고에도 "SQL 활용 능력"을 우대사항으로 기재해 둔 기업들이 많아지고 있습니다. 이제는 매출 실적과 같이 주어진 데이터만을 잘 분석하는 역량에서 더 확장되어서, 비즈니스에서 발생하는 문제를 해결하기 위해 필요한 데이터를 스스로 정의하고, SQL을 활용해 이를 방대한 데이터베이스에서 골라내고, 엑셀 등의 데이터 분석 툴을 활용하여 적중률 높은 해결 방안을 도출해 내는 역량을 지닌 사람이 높은 경쟁력을 가질 수 있는 시기예요.


취직 및 이직 시장에서 비개발직군이 SQL 활용 능력을 입증할 수 있는 방법은 SQLD 자격증을 취득하는 것입니다. SQLD 자격증은 한국데이터산업진흥원에서 시행하는 '국가공인' 자격증이에요. 그리고 실기는 없이 필기 단일 시험 합격만으로 자격증 취득이 가능합니다. 취득한 후에 보충 과정을 일정 시간 수강하면 평생 유효한 자격증이니, SQL을 공부하기로 마음먹었다면 자격증까지도 함께 준비해 보면 좋겠죠.

보통 동일한 기관에서 발행하는 교재를 이용해 자격증 준비를 많이 하게 되는데요. 이 교재만 혼자서 보는 것보다 유튜브에 공개되어 있는 해당 교재 기반의 강의영상(조금 오래된 영상이긴 하지만요)을 함께 보면 훨씬 내용을 이해하고 학습하는 데에 도움이 됩니다. 그리고 교재 이론 공부가 어느 정도 끝났고 시험이 얼마 안 남았다면 문제풀이에 집중하시는 것이 합격 가능성을 높일 수 있어요! 문제풀이 과정 자체를 외워버리셔도 좋습니다. 교재의 예제, 기출문제들과 유사한 형태의 문제가 다수 출제되는 경향이 있답니다.


데이터 기반의 문제해결 능력을 높일 뿐 아니라, 커리어 시장에서의 경쟁력도 더욱 키울 수 있는 SQL 공부. 망설이지 말고 지금 바로 시작해 보는 건 어떨까요?


keyword
이전 13화제7화. SQL로 업무속도 x2