Orange bullet points
데이터 엔지니어링 용어집

SQL이란? 데이터베이스를 다루는 데 필요한 용어들 정리

Background blur
Left arrow orange
모든 블로그 보기

서론

엔지니어든 비엔지니어든 상관없이, 앞으로의 데이터 시대를 살아가려면 데이터를 자유롭게 다룰 수 있는 능력이 필요합니다. 그리고 데이터를 다룰 때 피할 수 없는 것이 바로 이번에 설명할 SQL(에스큐엘)입니다. 영미권에서는 SQL(시퀄)이라고 읽는다. 

데이터 활용이 엔지니어에게만 한정되던 이전과 달리, 현재는 부서나 직종에 상관없이 데이터 활용이 요구됩니다. 따라서 비엔지니어에게도 SQL에 대한 이해를 깊게 하는 것이 큰 이점이 될 수 있습니다. 하나씩 이해해 나가 봅시다.

SQL이란?

많은 사이트에서 SQL에 대해 설명하고 있듯이, SQL을 한마디로 표현하자면 "데이터베이스를 조작하는 언어"입니다. 특히 Excel 시트처럼 표 형식으로 구성된 데이터베이스 관리 시스템(RDBMS)을 다룰 때 사용됩니다.

전통적으로는 데이터 처리에 특화된 엔지니어, 이른바 데이터 엔지니어를 중심으로 SQL이 사용되었습니다. 그러나 현대 웹 애플리케이션은 대부분 웹 서버, 애플리케이션 서버, 데이터베이스 서버의 3계층 구조로 구성되어 있어, 데이터베이스 사용이 이미 데이터 엔지니어만의 영역이 아닙니다. 또한 후에 서술하겠지만, 세일즈나 마케팅 등 엔지니어링 외의 분야에서도 대규모 데이터를 활용하는 경우가 늘고 있으며, 이러한 데이터를 처리하기 위해 SQL이 점점 활용되고 있습니다.

SQL로 무엇을 할 수 있을까?

SQL을 사용하지 않더라도, 우리는 평소에 Excel이나 Google 스프레드시트 같은 스프레드시트 소프트웨어를 통해 데이터를 다루고 있습니다. 예를 들어, Excel 시트에서 특정 행을 선택해 삭제하거나, 그 행 위아래에 새로운 행을 삽입하는 등 소프트웨어의 기능을 이용하여 데이터를 조작할 수 있습니다. 데이터 검색이나 치환, 함수로 계산하는 등 누구나 고도의 데이터 조작을 할 수 있게 되었습니다.

그러나 스프레드시트 소프트웨어로 처리할 수 있는 데이터 건수에는 한계가 있으며, 이를 초과하는 방대한 양의 데이터에 동일한 처리를 시도할 경우 소프트웨어가 멈추거나 처리가 불가능해지는 경험을 한 분들도 있을 것입니다.

스프레드시트 소프트웨어는 사용의 간편함과 자유도는 높지만, 대규모 데이터를 빠른 속도로 처리하기에는 적합하지 않다는 약점이 있습니다. 이러한 경우에는 방대한 데이터를 빠르게 처리할 수 있는 데이터베이스 도구를 사용하는 것이 해결책이 됩니다.

MySQL, PostgreSQL, Oracle Database와 같은 데이터베이스, 그리고 Google BigQuery, Amazon Redshift, Snowflake와 같은 DWH(데이터 웨어하우스)가 이에 해당하며, 이 도구들에 데이터 처리 내용을 문자로 명령하는 것이 SQL입니다. 데이터베이스 도구를 통해 대규모 데이터를 빠르게 처리할 수 있게 해주는 것이 SQL의 가장 큰 장점입니다.

또한 데이터베이스 도구뿐만 아니라, Salesforce에서는 객체 데이터 조회에 특화된 SQL 기반의 SOQL(Salesforce Object Query Language)이 사용되는 등, 방대한 데이터를 다루고 복잡한 조건으로 데이터 추출이나 대규모 데이터 조작이 필요한 서비스에서는 SQL 자체나, SQL을 기반으로 해당 서비스에 최적화된 언어를 사용할 수 있는 경우가 많습니다.

이처럼 최근에는 세일즈 및 마케팅 관련 도구에서도 SQL 사용이 증가하고 있으며, 이는 모든 사람에게 SQL 학습의 이점이 크다고 여겨지는 이유입니다.

SQL 배우기

컴퓨터 언어 학습이라고 하면 흔히 Java나 C++ 같은 프로그래밍 언어를 떠올리지만, SQL 학습은 이러한 언어들에 비해 난이도가 그리 높지 않습니다. 또한 기본 개념을 스프레드시트 소프트웨어의 확장으로 이해하면 되므로, 이미 Excel이나 Google 스프레드시트 사용 경험이 있다면 충분히 습득할 수 있습니다.

구체적으로는 입문서로 기본적인 구문들을 배우면서 실제로 샘플 데이터를 다루어 보는 것이 좋습니다.

앞서 언급한 Salesforce와 같이 SQL을 사용하는 도구가 이미 주변에 있다면, 배운 내용을 실제로 적용하여 데이터를 조작해 보는 것이 학습을 더욱 확고히 하는 데 도움이 됩니다.

또한 자신이 작성한 SQL이 어떻게 동작하는지 잘 떠오르지 않는 경우, 항상 머릿속에 커다란 Excel 시트를 떠올리고, 그 시트에서 먼저 Excel로 어떻게 작업할지 생각해 본 다음, 이를 SQL로 작성하려면 어떻게 할지 생각하는 방식을 통해 SQL 코드와 머릿속의 목표가 일치하게 생각해보는게 좋은 학습법일 수 있습니다.

궁극적으로는 하고자 하는 작업을 직접 SQL로 바로 작성할 수 있게 됩니다.

심화 학습을 향해

기본적인 SQL 학습을 마치고 기본 구문을 다룰 수 있게 된 분들을 위해 몇 가지 단계별 심화 학습 방향을 소개해 드리려 합니다.

스프레드시트 소프트웨어의 응용

앞서 EXCEL이나 Google Spreadsheets가 대규모 데이터 처리에는 적합하지 않다고 언급했지만, 예를 들어 Google Spreadsheets에서는 SQL과 유사한 QUERY 함수를 사용하여 화면 상의 작업보다 더 빠르게 데이터를 검색하고 추출할 수 있습니다. 또한, 데이터베이스를 Google Spreadsheets에서 Google CloudSQL이나 Google BigQuery와 같은 엔지니어 친화적인 도구로 이전하면 처리할 수 있는 데이터 용량을 크게 확장할 수 있습니다.

정규 표현식 학습

데이터를 다룰 때 중요한 점 중 하나는 데이터를 빠짐없이, 보다 쉽게 검색하는 것입니다. 이러한 데이터 검색에서 큰 강점을 발휘하는 것이 바로 정규 표현식입니다.

정규 표현식에 대한 자세한 설명은 생략하지만, 간단히 말해 표기 차이와 다양한 변형이 있는 문자열의 집합을 하나의 표현으로 검색하기 위한 개념입니다. 예를 들어, 특정 문자열에서 우편번호 데이터를 검색하려 해도 한 번의 검색으로는 하나의 우편번호만 찾을 수 있습니다. 그러나 우편번호의 "반각 숫자 3자리 + '-' + 반각 숫자 4자리"라는 구조에 주목해 이를 정규 표현식으로 나타내면, ^[0-9]{3}-[0-9]{4}$라는 검색을 통해 모든 우편번호를 검색할 수 있습니다.

SQL을 학습하고 데이터베이스 사용을 진행하면서 동시에 정규 표현식도 함께 다뤄두면 유용한 상황이 있을 것입니다. 또한, 정규 표현식은 SQL처럼 특정 도구에서만 작동하는 것이 아니라, Word와 같은 문서 소프트웨어나 텍스트 에디터 등 문자열 검색이 필요한 도구에서 대부분 사용할 수 있는 활용성이 높은 개념입니다.

SQL 명령의 종류

마지막으로 SQL의 대표적인 명령을 소개합니다.

SQL은 명령형 언어입니다. 데이터베이스에 명령문을 보내고 쿼리(질의)를 수행하여 데이터베이스를 조작합니다. SQL의 명령은 크게 네 가지로 분류됩니다.

DDL (Data Definition Language)

데이터베이스를 정의하는 명령입니다. 테이블 등 데이터베이스 오브젝트의 생성, 삭제, 결합 등이 포함됩니다.

  • CREATE문: 데이터베이스나 테이블 생성
  • DROP문: 데이터베이스나 테이블 삭제
  • ALTER문: 데이터베이스나 테이블 정의 변경

DML(Data Manipulation Language)

데이터베이스를 정의하는 명령입니다. 테이블 등 데이터베이스 오브젝트의 생성, 삭제, 결합 등이 포함됩니다.

  • CREATE문: 데이터베이스나 테이블 생성
  • DROP문: 데이터베이스나 테이블 삭제
  • ALTER문: 데이터베이스나 테이블 정의 변경

DCL(Data Control Language)

데이터 사용을 제어하는 명령입니다. 데이터나 테이블에 대한 권한을 제어하는 명령이 해당됩니다.

  • GRANT문: 데이터베이스에 접근하고자 하는 사용자에게 접근 권한 부여
  • REVOKE문: 데이터베이스에 접근 중인 사용자에게서 권한 박탈

TCL(Transaction Control Language)

트랜잭션의 시작과 종료에 관련된 명령입니다. 일부 DBMS에서는 DCL에 포함되기도 합니다.

  • COMMIT문: 트랜잭션(데이터베이스에 대한 일련의 처리)을 확정
  • ROLLBACK문: 트랜잭션을 취소하고, 트랜잭션 실행 전의 상태로 롤백

마무리

SQL은 비엔지니어에게도 습득할 만한 큰 장점이 있다는 점을 이해하셨을 것입니다. SQL은 표준화된 이후 이미 30년 이상이 지났고, 여러 차례 업데이트가 이루어졌지만 여전히 사용되는 상황이 늘어나고 있습니다. SQL을 습득하여 데이터 활용의 폭을 넓혀가시길 바랍니다.

또한 당사에서 제공하는 데이터 분석 기반 구축 서비스 TROCCO®에서도 데이터 마트 정의와 dbt 연동 기능에 SQL이 사용되어, SQL을 작성함으로써 보다 고도화된 데이터 파이프라인(수집된 데이터가 데이터 분석에 사용되기까지의 데이터 흐름)을 쉽게 구축할 수 있습니다. 물론 거의 SQL을 사용하지 않고도 데이터 분석 기반을 구축할 수 있습니다.

데이터 연계, 정비, 운영을 효율적으로 진행하고자 하거나 제품에 관심이 있는 분들은 자료를 참고해 주세요.

TROCCO는  파트너들에게서 신뢰받고 있습니다.