brunch

You can make anything
by writing

C.S.Lewis

by 플래터 Sep 15. 2022

엑셀로 SQL 이해하기 - FROM과 SELECT

비개발자를 위한 엑셀로 이해하는 SQL ②

앞선 글에서는 RDB 방식의 데이터베이스(DB)와 SQL이 일반 사무직으로서 우리가 접한 엑셀Excel과 다를 바가 없음을 살펴보았다. 이어지는 이번 글부터는 데이터를 조회 및 추출하는 차원에서 사용하는 SQL의 주요 구문과 노하우를 우리에게 친숙한 엑셀에 비유하거나 사례를 들어 설명하고자 한다.




1. 어느 시트/표의 자료를 볼 것인지 정해주는 FROM


우리가 엑셀에서 어떤 데이터를 보기로 한다고 가정해보자. 그럼 우리는 조직에서 관리하는 수많은 엑셀 파일 중에서도 필요한 데이터가 있는 파일, 특히 그중에서도 필요한 데이터가 있는 시트와 표를 열어볼 것이다.


이와 마찬가지로 FROM은 바로 DB에 존재하는 수많은 테이블 중 어떤 테이블의 자료를 조회하고자 하는지 지정해주는 명령어다.


FROM 테이블명 "수많은 테이블 중에서 이 테이블에 있는 자료를 확인할 거야"

엑셀로 이해하는 SQL의 FROM 명령어


부록1 

우리 회사의 데이터베이스에는 어떤 테이블이 있고, 테이블 안에는 어떤 값들이 있는지 어떻게 알 수 있을까?


그런데 일을 하다 보면 우리 스스로도 어떤 곳에 어떤 엑셀 파일을 저장해두었는지, 그리고 그 엑셀 파일 안에 그래서 어떤 내용을 기록해두었는지 일일이 기억하기란 어렵다. 때로는 컴퓨터 폴더부터 드라이브까지 곳곳을 뒤져봐야 "아~이런 엑셀 파일이 있었구나!" 깨닫기도 하고, 더욱이 그 안의 내용은 열어봐야만 알 수 있다.


그러나 다행히도 데이터베이스와 이 안의 테이블들은, 이렇게 일일이 찾아다니고 또 열어보지 않아도 된다. 보통의 경우라면 ERD 또는 이에 준하는 문서를 기록하여 관리하기 때문이다.


ERD에 대한 자세한 설명은 조금 더 기술을 중심으로 설명하는 자료에 맡기기로 하고, 비개발자, 비데이터 직군 입장에서 이해해야 할 ERD란 아래와 같다.


1. 회사의 데이터베이스에 어떤 테이블들이 있는지, 그 테이블의 명칭은 무엇인지 나열한다.

2. 각 테이블 안에는 어떤 열column이 있고 그 열column 안에 기록해둔 값의 유형이 무엇인지 표기한다. 가령 '가격'이란 열column이 있고, 이게 정수형 숫자integer임을 표기해둔다.

3. 그 테이블 사이에 서로 어떤 관계가 있는지 표기한다. 예를 들어, "이 테이블과 저 테이블을 함께 참고할 수 있다"는 식의 표기를 해둔다.

4. 조금 더 구체적으로는 어떤 열column을 기준으로 두 테이블이 서로 관계가 있고, 그 관계가 어떤 관계인지도 표기한다. 예를 들어, '상품 리스트'라는 테이블의 '상품번호'라는 값과, '판매 내역'이라는 테이블의 '판매된 상품번호'가 관계가 있고, 이는 1:N의 관계임을 표기한다.


※ ERD에 대한 기술적 이해, 자세한 설명은 기존의 다른 자료를 참고 � (구글 검색) ERD




2. 테이블의 데이터를 조회하게 해주는 SELECT


우리가 필요한 정보를 확인하기 위해 특정 엑셀 시트를 열었다고 가정해보자. 이전부터 기록해둔 정보가 있고 거기에 '열 숨김' 등의 별도의 조치를 취한 게 없다면, 기본적으로는 ‘모든’ 열column이 보일 것이다.


그런데 우리가 평소에 데이터를 취급하다 보면 어떤 때에는 시트에 기록해둔 특정 열column을 그다지 조회하거나 사용할 필요가 없기도 하다. 예컨대 상품 재고에서 우리가 취급중인 상품의 종류만 확인하고 싶다고 하면, 상품명과 상품 종류만 살펴보고, 상품별 기타 특징, 가격, 입고일 등은 필요하지 않을 것이다.


그래서 이럴 때에는 ‘열 숨기기’를 통해 해당 열을 잠시 가려두기도 하고, 아니면 나머지 필요한 열만 골라 복사하여 다른 시트에 붙여 넣어 편집과 분석을 하기도 하는데, 이처럼 테이블에서 내가 보고자 하는 열column이 무엇인지 선택하는 명령어가 바로 SELECT다.


SELECT *  "테이블에 있는 모든 열column을 보여줘"

SELECT 열1  "테이블에 있는 열column 중에서 열1만 보여줘"

SELECT 열1, 열2 "테이블에 있는 열column 중에서 열1,열2를 보여줘"

엑셀로 이해하는 SQL의 SELECT 명령어


부록2

SELECT로 불러온 열에는 사칙연산, 함수 등의 적용이 가능하다 


그런데 우리가 실무에서 데이터를 조회할 때에, '있는 그대로, 곧이곧대로' 불러와서 사용할까? 때로는 사칙연산을 적용하기도 하고, 때로는 서식을 바꾸거나, 각종 함수를 적용하기도 한다.


마찬가지로 SQL에서 SELECT를 통해 불러온 열column의 값에도 사칙연산, 함수 등의 적용이 가능하다. 이를 통해 값을 변경하고, 서식을 바꾸고, 이 외에 필요한 형태로 가공할 수 있다.(적용할 있는 다양한 함수는 이후 글에서 살펴보기로 하자)


다만 이때에 특이사항이 몇 가지 있는데

1. 엑셀처럼 글자 색깔, 굵기, 배경색 적용하고 그런 건 당연히 없다 

2. 우리는 지금 SELECT, 즉 "조회"를 하고 있다. 다시 말해 SELECT로 불러온 값에 무슨 함수를 적용하건 무슨 사칙연산을 적용하건 DB에 있는 원본 데이터에는 아무런 지장이 없다. 이게 엑셀과의 궁극적인 차이다. 엑셀은 우리가 조회하는 표가 곧 원본이기 때문에, 1) 사본을 떠서 사본을 이용하거나 2) 그렇지 않으면 원본을 바꿔버리는 셈이 되지만 SQL에선 입력, 수정, 삭제, 조회가 엄밀하게 구분되어있다. 그러니 안심하고 써도 된다. 

SELECT로 조회하는 특정 열column에 *3 을 적용한 사례



부록3

테이블과 열column의 이름은 누가 어떻게 정하는 걸까? 바꿀 순 없을까?


그런데 우리도 실무에서 엑셀로 데이터를 기록, 관리하다 보면, 자료의 기록된 순서에 대해 어떤 사람은 '연번'이라고 표기하기도 하고 어떤 사람은 'No'라고 표기하여도 하고, 또 어떤 사람은 이런 걸 굳이 적지 않기도 한다. 그럼 대체 어떤 값을 적을지, 그리고 이 값을 적기로 할 때에 그 값의 이름, 열의 이름은 누가 어떻게 정하는 걸까?


1. 우선 DB의 Table에 어떤 값을 기록할지는 서비스에서 필요한 내용에 따라 기획자, 분석가 등과 논의하여 최종적으로는 백앤드 엔지니어, 또는 데이터 엔지니어가 만든다. 


2. 그런데, DB의 Table이라는 건 '나만 보고 마는' 개인적인 기록이 아니라, 우리가 사용하는 온라인 서비스의 곳곳에 참고되어 사용된다. 엑셀은 보고서용, 기록용으로 사람이 수동으로 가공하고 표기가 다르거나 오탈자가 있어도 적당히 넘어가도 되지만, DB의 Table에 있는 열 column의 명칭은 그럴 수 없다. 그래서 이름을 정하는 데에는 나름 조직 내의 규칙이 있고, SQL에서 권고하는 규칙이 있다. 다만 이를 '조회'하는 입장인 우리가 크게 신경 쓸 필요는 없다.


3. 다만 그럼에도 '조회'하여 참고하고 사용하는 입장에서는 영어로 된 열column 이름이 직관적이지 않을 때가 있다. 특히, 이 자료를 다시 다른 누군가에게 공유하거나 보고서로 올릴 때에는 'item_no'보다는 '품번'이 적절하고, 'price'보다는 '단가' 등이 적절할 것이다.


4. 그래서 SELECT 또는 FROM 명령어로 테이블이나 테이블 안의 열column을 조회할 때에, 이름을 바꾸어 조회할 수 있다. 이게 바로 AS (또는 Alias) 명령어다. 마찬가지로 어디까지나 SELECT, 조회이므로 실제 DB Table에서의 명칭이 바뀌지는 않으니 안심하자. 




이어지는 다음 글에서는 SQL의 기초 문법 중 하나인 WHERE과 ORDER BY를 마찬가지로 엑셀에서의 실사용 사례에 빗대어 직관적으로 살펴보고자 한다.



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari