아직 SQL을 모르는 분들을 위한 안내서
![아직 SQL을 모르는 분들을 위한 안내서](/content/images/size/w1200/2021/12/sample-google-sheet-function-1.png)
SQL 초보자분들께서는 참고하시되 다른 자료들과 함께 보시면서 비판적으로 받아들여주시면 좋습니다. 이해가 안되는 부분을 알려주시면 보강하고, 더불어 틀린 내용을 말씀해주시면 수정하도록 하겠습니다. 감사합니다.
SQL이란?
SQL은 Structured Query Language 의 약어로, 직역하면 '구조화된 질문 언어'입니다. 정의만 보면 이해하기가 참 어렵습니다.
저는 이해가 안될 때는 다른 설명이나 예시를 살펴보다가 그래도 안되면 일단 넘어가긴 했습니다.😅
SQL은 컴퓨터 언어 중 하나입니다. 그리고 데이터베이스를 관리하는 언어입니다. 그렇다면 데이터베이스는 무엇일까요?
데이터베이스란?
단순하게 생각하면 '데이터를 모은 장소'라고 볼 수 있습니다.
데이터베이스는 '어떻게' 모으고 관리하는지도 중요한데요. 그 방법이 규칙적이라면 새로운 사람이 이해하기도 쉽고 관리도 잘 되겠죠?
데이터를 기록하는 양식은 다양합니다. 그 중에서 우리는 SQL 언어로 조작이 가능한 표 형태의 데이터베이스를 배울 것입니다.
이는 주로 '관계형 데이터베이스'(이하 데이터베이스로 통칭)라고 하는데요. 우리가 엑셀이나 구글시트에 업무 데이터를 기록하는 방식과 비슷합니다.
예시
우선 비품 관리를 예로 들어 SQL이 실제로 어떻게 작동하는지 보여드리겠습니다.
<비품 관리>
![](https://blog.selectfromuser.com/content/images/2021/12/sample-table-equipment-management.png)
"여기서 공기청정기 구매일 2021-11-01 이전 건이 몇 개인지 찾아주세요."라는 요청을 받았다고 합시다. 사람은 '여기'가 '비품 관리'라고 추측할 수 있고, '공기청정기'만을 찾으려면 '비품 구분' 항목에서 찾아야한다는 것을 알 수 있습니다.
하지만 컴퓨터는 그렇지 않죠. 모든 상황과 조건을 정확하게 알려줘야하는데요.
![](https://blog.selectfromuser.com/content/images/2021/12/sample-google-sheet-function.png)
엑셀이나 구글시트(이하 엑셀)에서는 COUNTIFS 라는 함수를 사용해서 찾는 구간(B2:B6)과 찾는 내용("공기청정기")을 입력해주면 알 수 있습니다.
=COUNTIFS(B2:B6,"공기청정기",C2:C6,"<2021-11-01")
SQL도 엑셀처럼 COUNT라는 함수가 있는데요. 어떤 표(비품 관리)에서 확인하는지도 적어줘야하고, 조건을 적는 방식이 조금 다릅니다.
SELECT COUNT('비품 구분')
FROM '비품 관리'
WHERE '비품 구분' = '공기청정기'
AND '구매일' < '2021-11-01'
이렇게 비교해보니 엑셀이 더 편한거같기도하고, SQL이 꼭 필요한가 싶지 않으신가요?
아마 SQL이 익숙하지 않아서기도 하시겠지만, 실제로 일을 할 때 엑셀이 더 편리한 상황들이 분명히 있습니다. 하지만 마찬가지로 SQL이 더 편리한 상황도 있죠.
어떤게 좋은지는 배워가다보면 알게될거에요! 처음부터 너무 신경쓰지 맙시다 :)
기본 단어와 문법
혹시 위의 SQL 문장을 보시고 바로 이해가 되셨나요? 그렇다면 천재... 아직 이해가 안되실 수 있으니 단어들을 뽀개서 설명해드릴게요.
SQL도 언어이기 때문에 영어처럼 '문법'이 있는데요.
사실 비개발자 입장에서는 SQL은 주로 데이터를 '조회'할 때 사용합니다. 때문에 여기서는 '조회'에만 집중해서 작성하겠습니다.
SQL로 데이터 조회할 때 사용하는 기본 언어는 5가지입니다.
SELECT
- 표 데이터를 조회할 때, 어떤 열(세로줄, column)을 조회할지 선택합니다.
- 전체를 조회하고 싶을 때는 SELECT * (all 이라는 의미) 사용
- 특정 열만 조회하고 싶을 때는 해당 열의 이름을 적으면 됩니다.
- 여러 열을 선택하고 싶을 때는 콤마(,)로 구분하여 작성하시면 됩니다.
FROM
- 어떤 테이블을 조회할지 선택합니다.
WHERE
- 특정 조건을 만족하는 데이터만을 조회하고 싶을 때 사용합니다.
- 조건을 적는 공간입니다.
AND/OR
- WHERE 가 특정 조건을 적는 '최초의 구분선'이라면 AND 와 OR 는 추가하는 곳입니다.
- 사실상 WHERE 와 거의 같은 역할을 하지만 '언어'로서 사람들이 좀 더 이해하기 쉽게 구분한게 아닌가 합니다.
- 괄호()를 사용하면 수학적 논리와 같게 작동합니다.
- (1+1) * (2+2) = 2 * 4 = 8
문법에만 너무 치중하면 언어를 배우기 어렵겠죠? 예시를 보면서 읽어보겠습니다.
SELECT *
FROM '비품 관리'
WHERE '비품 구분' = '공기청정기'
AND '구매일' > '2021-01-01'
Select all from '비품 관리' table where '비품 구분' is '공기청정기' and '구매일' is after '2021-01-01'.
수학적인 기호들을 사람의 언어로 바꿨지만, 영어로 읽으니까 거의 달라진게 없는 느낌이지 않나요?
SQL은 영미권 사람이 만든 언어이기 때문에 (대부분의 컴퓨터 언어가 그렇긴해요.) 영어의 문법과 비슷해서 한국인 입장에서 처음에는 헷갈릴 수 있습니다.
실제로 원래 SQL은 Structured 'English' Query Language 였다고 하네요.
<한국어로 직역 시>전체를 조회해라. 비품 관리에서. 비품 구분이 공기청정기인 애들만. 그리고 구매일이 2021-01-01 이후인 애들만.
<의역 시>비품 관리에서, 비품 구분이 공기청정기이고 구매일이 2021-01-01 이후인 건들의 모든 항목을 조회해라.
다시 SQL 문장을 보니 이해가 잘 되시나요? 생각보다 별거없지 않나요?
저는 기초적인 걸 배운 다음에는 예제를 보고 쭉 읽으면서 익숙해지려고 하거나 직접 문장을 작성해서 조회해보고 그랬었는데요. 만약 재직중인 회사에서 서비스 데이터베이스를 조회할 수 있는 권한을 받으실 수 있다면, 요청해보시고 실제 환경에서 직접 연습해보는게 가장 좋습니다.
데이터 조회나 분석을 위해 SQL을 배울 때 가장 중요한 건 당장 써먹을 수 있느냐, 내가 의지가 있느냐가 제일 중요하지 않을까 합니다. 그래서 조회하고 싶은 정보를 표(table) 형태로 먼저 생각하거나 엑셀에 작성해보고 SQL 문장을 작성해보면 훨씬 도움이 많이 됩니다.
물론 배우다보면 막히는 부분들이 있을 수 있습니다. 하지만 주변분들에게 물어보시거나, 구글에 검색하면 충분히 잘 배우실 수 있을거에요.
❓ "근데 Select 는 '선택하라'라는 뜻인데 '보여줘라(show)'라고는 안해도 되나요?"
이런 생각까지 하신다니.. 탐정의 소질이 있으시군요. 뇌피셜이지만 아마 SELECT AND SHOW 라고 하면 번거로워서 그런게 아닐까요? 네.. 언어는 가끔은 그냥 받아들이셔도 좋습니다.
❓ SELECT, FROM, WHERE, AND 의 순서를 바꿔도 될까요?
문법은 '약속'이기 때문에 바꾸면 오류가 발생할 수 있습니다. 특히 컴퓨터 언어는 대부분 제약이 많은데요. 사람의 언어처럼 유연하진 않지만, 그대신 해석이 갈려서 커뮤니케이션에 문제가 생기는 일을 막을 수 있습니다. 컴퓨터에게는 약속대로 말 안하면 이해를 못하는 점도 있지만요!