brunch

You can make anything
by writing

C.S.Lewis

by Jeonghae Lee May 20. 2019

[5월 미션:C조] SQL에 대해서

SQL에 대해 간단히 설명해보기

글쓰기연구소 5월 미션은 ‘릴레이 글쓰기’입니다. 저또한 C조로써 4번째 주자 입니다. 

< 서준수님 글: 유치원생에게 데이터 베이스 설명하기 https://brunch.co.kr/@mystoryg/70 > 

< 천은정님 글: 유치원생에게 테스팅 설명하기 https://brunch.co.kr/@naomi-chun/24

< 전현희님 글: [설명]을 위한 준비 4가지 https://brunch.co.kr/@hsimple/5

여기에 쓰여진 글중에 공통된 주제는 설명입니다. 설명이라는것은 어떤 무언가를 다른 사람이 알아듣기 쉽게 풀어쓰는것을 설명이라 

할수 있을것 같습니다. 그래서 저는 최근에 많이 뜨고 있는, 일반인들도 잘 사용할 수 있는 SQL에 대해서 축약해서 설명해 보겠습니다. 


먼저 SQL에 대해 간략히 알아봅니다. SQL이란 절차적 질의 언어 입니다. 데이터베이스라는 시스템 안에는 무수히 많은 데이터를 가지고 있습니다. 수백 기가바이트에서 테라 바이트에 이르는 데이터가 기업에서는 수두룩 합니다. 이 광활한 데이터 안에서 자신이 원하는 데이터만을 가지고 오기 위해서는 특정 언어를 사용해야 하는데 이 명령어 집합을 SQL(Structured Query Language)이라고 합니다. 저의 주제는 그중에서도 이 ANSI SQL에 대해서 ‘설명’하는 시간을 가져볼까 합니다. 


1. 데이터 베이스(Database)란 

데이터 베이스란 무엇일까요? 제가 생각하기엔 이렇습니다. 데이터, 즉 자료를 어떤 특성에 맞게 분류해 둔 데이터 집합체 입니다.  그리고 이 데이터들을 목적에 의해서 쌓인둔것을 데이터 베이스라고 할 수 있을것 같습니다. 그리고 하나 더 있습니다. 이 데이터베이스들을 관리해주는 시스템이 있어야 합니다. 이게 바로 데이터 베이스 관리 시스템(DBMS)입니다. DBMS=Database라고 오해를 하시는 분들이 많은데 이건 틀린 겁니다. 데이터베이스 컨셉과 기능은 어느 데이터 베이스나 같습니다. 단시 관리시스템이 틀리기 때문에 서로 호환이 안되는 것 뿐이지 절대적인 기본 개념은 같습니다. 실 예로 데이터베이스에서 데이터를 추출해 내면 O사 DBMS나 I사 DBMS나 데이터는 같습니다. 이게 바로 데이터 베이스는 같다는 이유입니다. 참고로 DBMS중 가장 유명한 회사가 오라클이고 이 오라클이 바로 DBMS인 것입니다. 이미 최초의DBMS를 만드신 분이 이론의 대부분을 확립해 두셨기 때문에 어떤 DBMS나 개념은 같습니다. 단지 관리방식과 운영방식이 틀리기 때문에각 벤더사마다 공부가 필요합니다. 벤더사마다 부르는 용어는 틀리지만 큰틀에서는 똑같습니다. 



2. 다양한 DBMS의 존재. 

가장 유명한 DBMS인 오라클부터 MS-SQL, DB2, Sybase등 라이선스 비용과 기술 지원을 받을 수 있는 상용 DBMS가 있습니다. 그리고 최근 몇년새에 놀라운 성장을 이루어내고 있는, 상용 DBMS 못지 않은 MySQL, PostgreSQL등 오픈소스 DBMS등이 있습니다. 여기 DBMS들은 모두 SQL이라는 언어를 지원하고 있습니다. 근데 여기서 문제가 생기죠. SQL은 데이터 베이스에 질의해서 원하는 데이터를 가져오는 언어라고 했습니다. 그럼 DBMS마다 SQL언어를 익혀야 할까요? DBMS마다 관리방식과 특성이 벤더사마다 틀리다고 했으니 사용자는 모두 DBMS마다 SQL을 익혀야 한다고 하면 아마 전 세계 DBMS 거의 모든 시장은 오라클이 장악하지 않았을까요? 개인적으로 조심스럽게 추측해 봅니다. 이때 등장한 개념이 바로 ANSI SQL입니다. ANSI SQL은 표준 SQL입니다. 즉 DBMS를 만든 회사에서만 수행되는게 아니라 모든 DBMS에서 수행되는 SQL입니다. 요새 DBMS들은 모두 ANSI SQL을 지원하고 있습니다. 



3.ANSI SQL의 필요성 대두 

이전에 말씀드렸듯이 각 벤더사의 DBMS마다 SQL을 따로 배워야 한다면 정말 힘이 들 것입니다. 그러나 사용자는 ANSI SQL하나만 익히고 그와 동시에 모든 DBMS를 다룰수 있다면 당연히 편리할 것입니다. 안타깝게도 모든 DBMS마다 ANSI SQL을 지원하지 않는데 몇년전부터 이제는 거의 표준으로 ANSI SQL을 지원합니다. ANSI SQL을 지원하지 않았다기보단 벤더사마다 조금씩 SQL 문법이 조금 틀리기 때문입니다. 대표적인 회사가 오라클입니다. 거의 모든 기능이나 쿼리를 독보적으로 해왔는데 문제는 다른 사람들이 이게 표준으로 오해하고 있다는 것입니다. 이것은 아주 잘못된 생각입니다. 오라클이 표준이 아닌데 워낙에 점유율이 높다보니 그런 현상이 생겼다는 것입니다. 예제로 설명을 드리겠습니다. 다음과 같은 쿼리가 있다고 가정해 봅니다. 


select a.*, b.* 

from table a, table b 

where a.a=b.b 


위의 쿼리는 두개의 a,b 테이블을 결합해서 a 테이블의 a컬럼과 b테이블의 b컬럼에 데이터가 같은 리스트만 출력해 달라는 SQL문입니다.  

이것은 개발자 분들이나 데이터베이스를 처음 배우시는 분들도 어렵지 않습니다. 하지만 


select a.a, b.b 

from table a, table b 

where a.a=b.b(+) 


이 쿼리는 left outer join이라는 방식으로 두개의 테이블을 결합해서 왼쪽에만 있는 컬럼을 모두 포함해서 표현해 주라는 의미입니다. 그런데 오른쪽의 (+)의미를 모른다면 당황하게 될 것입니다. 이것은 오라클에 특화된 문법으로 오라클을 사용하는 사람들만 알 수 있다는 뜻이 됩니다. 이것을 ANSI SQL로 풀어쓰면 


select a.a, b.b 

from table a left outer join table b 

on a.a=b.b 


로 풀어 쓸수 있습니다. 이것이 바로 ANSI SQL입니다. 이 SQL은 오라클 뿐만이 아니라 모든 DBMS에서 쓸수가 있습니다. 적어도 SQL을 모르는 분들이더라도 left outer join 문법이구나 라고 알수는 있습니다. 또한 ANSI SQL로 소프트웨어를 개발하면 특정 벤더를 탈피할 수 있습니다. 아까도 말씀드렸듯이 ANSI SQL은 특정 벤더에 종속적이지 않습니다. 그래서 필요시 다른 벤더의 DBMS를 쓴다 하더라도 빠르게 DBMS를 다른 벤더사로 이동할 수 있습니다. 요새 특정 DBMS의 이탈이 가속되고 있는것도 ANSI SQL의 영향이 크다고 할 수 있습니다. 고객사 입장에서도 낮은 비용으로 DBMS를 선택할 수 있습니다. 



4. SQL을 배우자. 

최근 빅 데이터나 머신러닝 통계분석등의 트렌드로 일반분들도 SQL을 많이 배우시고 있는 추세입니다. 개발자나 DB전문가에 부탁하는게 아니라 직접 DBMS에 붙어서 원하는 데이터를 추출하고 가공하고 합니다. 

SQL은 그리 어렵지 않습니다. 만약 어려운 언어라면 비전공자.분들도 배우려 하지 않을 것입니다. 기본 문법부터 천천히 익혀 나가신다면 누구든지 쉽게 익힐 수 있습니다. 요새는 온라인 강의, 오프라인 강의, 그리고 책이나 기타 무수한 방법을 통해서 SQL을 익힐 수 있는 방법이 많아졌습니다. 

이 글을 읽는 여러분들도 데이터에 대해서 혹은 분석가, 빅데이터 엔지니어가 되고 싶다면 반드시 SQL을 익히셨으면 합니다. 

매거진의 이전글 [설명]을 위한 준비 4가지
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari