회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 월 최대 15% 할인받으세요
VOD 강의부터 부트캠프에 이르기까지, SQL(Structured Query Language, 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어)의 수요가 늘고 있다. IT 제품과 서비스를 중심으로 사업을 영위하는 조직이 증가하고 데이터 분석에 대한 수요가 증가하면서, 이제는 비단 백엔드 엔지니어와 데이터 엔지니어, 데이터 분석가가 아니더라도 DB에서 직접 데이터를 추출해서 분석하려는 직무가 늘었기 때문이다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
VOD 강의부터 부트캠프에 이르기까지, SQL(Structured Query Language, 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어)의 수요가 늘고 있다. IT 제품과 서비스를 중심으로 사업을 영위하는 조직이 증가하고 데이터 분석에 대한 수요가 증가하면서, 이제는 비단 백엔드 엔지니어와 데이터 엔지니어, 데이터 분석가가 아니더라도 DB에서 직접 데이터를 추출해서 분석하려는 직무가 늘었기 때문이다.
그런데 일부 강의나 아티클에서는 SQL을 통한 데이터 추출과 분석을 '누구나 할 수 있는' 것으로 소개하면서도 동시에 일반 사무직, 비개발자, 비데이터 직군이 전혀 경험해보지 않은 무엇인 것처럼 소개하는 아이러니한 모습을 보인다. 비개발자, 비데이터 직군인 우리에게 데이터 추출과 조회는 정말 처음일까? 그리고 SQL은 우리가 경험해보지 못한 신세계의 개념과 기술일까?
일반 사무직이나 사무직과 협업하는 현장직, 기술직 대부분(심지어 예순 넘은 우리 아버지도)이 사용하는 사무 관리 솔루션이 있다. 바로 엑셀(또는 구글 스프레드시트)이다.
어떤 사람은 가계부를 기록하거나 여행 일정표를 만들기도 하고, 어떤 사람은 프로젝트 일정표를 만들어서 관리하기도 하고, 또 어떤 사람은 함수를 이용해 특정 양식의 문서 관리를 자동화하기도 하는 등 엑셀은 정말 다양한 용도로 사용되며, 이에 맞는 다양한 기능을 제공하고 있다.
그런데 세부적인 활용 용도와 노하우를 제외하면, 과연 엑셀은 궁극적으로 무엇을 위한 솔루션인가? 다시 말해 엑셀이 제공하는 핵심 기능은 무엇인가? 바로 데이터의 기록과 관리다.
정확히는 행과 열로 이루어진 표에 데이터를 기록하고 관리-수정, 삭제, 추출-하기 위한 도구로서 이를 위한 여러 가지 복잡한 동작을 프로그래머처럼 콘솔 창에 명령어를 입력하여 수행하는 대신, GUI 방식으로 마우스로 아이콘을 클릭하거나 정해진 단축키를 입력하여 쉽게 작업할 수 있게 도와주는 솔루션이다.
앞서 말한 것처럼 비개발자, 비데이터 직군인 우리는 이미 엑셀에서 마우스 클릭과 단축키를 통해 데이터를 기록하고, 수정하고, 삭제하고, 조회하는 일을 하고 있다. 그리고 이는 우리 모두 한 번씩은 들어봤을 IT 서비스의 ‘DB(데이터베이스)’와 하등 다를 바가 없다.
엑셀과 DB가 다를 바가 없다는 게 어떤 의미인지 이해하기 위해, 우선 우리가 평소에 사용하는 엑셀을 조금 더 자세하게 뜯어보기로 하자.
우선 엑셀은 기본적으로 파일 ⊃ 시트 ⊃ 표(테이블)의 형태로 구성되어 있다. 파일은 말 그대로 ‘.xlsx’의 확장자로 끝나는 엑셀 파일을 의미하며, 하나의 파일 내에는 여러 개의 창, 또는 시트를 만들어 각기 다른 종류나 내용의 자료를 기록하고 관리한다. 그리고 하나의 시트 내에는 행(row)과 열(column)의 구조로 이루어진 표(table) 형태의 문서를 기록하고 관리할 수 있다.
그리고 우리는 조직마다, 팀마다, 사람마다 (관리 규칙은 다르겠지만) 보통 하나의 시트에 하나의 표를 생성하고, 주제에 대한 정보를 기록한다. 그리고 이와 다른 정보(예컨대 다른 연도의 자료, 다른 부서의 자료, 다른 카테고리의 자료)는 다시 다른 시트를 열어서 그 시트 안에 새로운 동일하거나 유사한 구조로 표를 만들어 기록한다. 이렇게 하나의 파일에는 여러 개의 시트와 표가 생성되어 저장된다.
또한 하나의 파일에 우리가 다루는 모든 정보를 수십, 수백 개의 시트를 만들어 기록하기란 부적절하거나 불편하므로, 여러 개의 파일을 만들어서 위와 같은 방식으로 기록, 관리한다. 그리고 필요에 따라 파일A의 시트1과 시트2를 함께 참고하거나, 파일A의 시트1과 파일B의 시트1을 같이 참고하기도 한다.
반면 우리가 흔히 이야기하는 DB에는 크게 두 가지 종류인 ‘RDBMS 방식’과 ‘NoSQL 방식’이 있다. 이 중에서도 비개발자, 비데이터 직군으로서 우리가 가장 흔히 접하거나 관심을 두게 되는 대상은 RDBMS 방식의 DB이다.
RDBMS의 사전적 정의는 '관계형 데이터베이스 관리 시스템(relational database management system, RDBMS)'이다. 이 정의가 무엇을 말하는지 1) 관계형 2) 데이터베이스 그리고 3) 관리 시스템을 하나씩 간단히 짚어보자.
우선 데이터베이스란 말 그대로 우리가 말하는 DB를 이야기한다. 엑셀과 마찬가지로 정해진 행(row)과 열(colums)의 형태로 정보를 기록하여 저장하는데, 이러한 행과 열의 구조를 우리는 엑셀에서와 마찬가지로 테이블(Table)이라 부른다. 이러한 테이블을 모아둔 곳이 바로 데이터베이스, DB다.
관리 시스템이란 말 그대로 관리하는 시스템이므로 특별할 점이 없다. 예컨대 우리가 앞서 살펴본 엑셀 역시도 문서를 작성하고 관리하는 시스템이니까.
그렇다면 '관계형'이란 대체 무엇일까? 이 역시 엑셀과 전혀 다를 바 없다. 우리가 앞서 살펴보았듯이, 우리는 하나의 파일에 여러 개의 시트와 표를 만들어 서로 참고하기도 하고, 때로는 각기 다른 파일 안에 있는 시트를 서로 비교하며 참고하기도 한다. 이렇게 하나의 시트는 다른 시트와 참고할 수 있게끔 '관계'가 있는데 이게 바로 '관계형'이다.
그리고 이는 결국 앞서 살펴본 엑셀의 파일과 시트, 표의 개념 및 구조와 모두 동일하다.
그렇다면 과연 RDBMS의 DB와 우리가 흔히 사용하는 엑셀 사이에는 어떤 차이가 있을까? 사실 다른 점을 말하기 시작하면 한도 끝도 없다. 둘은 엄연히 다른 솔루션이고, 사용되는 환경과 디테일한 기능이 모두 다르니까.
그러나 비개발자, 비데이터 직군, 다시 말해 일반 사무직으로서 우리가 정보를 기록하고, 수정하고, 삭제하고, 조회하거나 추출하는 차원에서만 생각해보면 엑셀과 RDBMS DB의 차이는 아래와 같다.
1) 엑셀에선 마우스 클릭과 단축키로 하던 일을 DB에서는 명령어로 입력해야 한다. 그 명령어를 다루는 언어를 우린 SQL이라고 부른다. 이에 따라 엑셀은 입력, 조회, 수정, 삭제 등의 복합적인 작업을 마우스로 (슥슥) 선택하고, 드래그하여 진행하고, 이를 바로바로 눈에 볼 수 있어 직관적이다. 반면, SQL은 오로지 명령어로 진행하기 때문에 동일한 작업도 다소 추상적이거나 복잡해 보인다.
2) 엑셀에서는 하나의 시트에서 사용자가 바로 새로운 시트를 열고, 표를 만들고, 이 안의 데이터를 조회하고, 입력하고, 수정하고, 삭제할 수 있다. 다시 말해 사용자에게 모든 권한이 주어진다. 반면 온라인 서비스의 DB에서는 보통 이러한 권한을 나누고 제한한다.
가령 엑셀에서 외부인에게 ‘보기 권한’만 부여해 파일을 공유해 문서를 볼 수만 있는 경우가 있다. SQL에서는 이를 조금 더 강력하게 구성해 DB를 설계하고 관리하는 개발자(백엔드 엔지니어)는 자신 외에 나머지에게 DB의 테이블을 ‘조회’할 수 있는 권한만 주고, 정보를 직접 입력하거나 수정, 삭제할 수 있는 권한은 본인만 가지고 있는 경우가 많다.
이러한 차이에도 불구하고, 결국 비개발자, 비데이터 직군으로써 사용하거나 관심을 두는 엑셀에서의 데이터 기록 및 관리와 RDBMS에서의 데이터 기록 및 관리는 큰 맥락에서 동일하다. 특히나 우리가 DB와 SQL에 관심을 두는 목적은 이미 존재하는 데이터의 ‘조회’를 하는 것이기에 크게 다르지 않다. 이어지는 글에서는 우리가 평소 사용하던 엑셀의 기능과 이를 사용하는 맥락, 노하우, 디테일을 바탕으로 초~중급 수준의 SQL 명령어를 용례와 함께 살펴보고자 한다.