「왜 쿼리( SQL)을 배워야 하는가」

 

사무환경에서 자주 사용하는 엑셀(Excel)의 경우 행은 1,048,576개, 열은 16,384개로 한정되어 있다. 개인 데스크탑 환경에서는 어지간한 좋은 데스크탑 환경이 아니라면 행이 60만개가 넘어가면 수식을 걸고 참조를 하면 버벅인다.

 

그렇다면 100만개가 넘어가는 자료를 관리하고 조회하기 위해서는 어떻게 해야 할까?

 

반응형

 

대용량 데이터는 DB(Database)*에 자료들이 스프레드 시트(spread sheet) 형태로 쌓여지는데, DB에 쌓여진 자료를 조회할 수 있는 명령어가 필요하며 이때 사용하는 언어가 쿼리(SQL)이다. 즉 대용량 데이터 관리를 위해서는 SQL을 배워야 한다.

 

* 실무에서는 DB(Database)와 이를 관리하는 시스템을 의미하는 DBMS(DataBase Management System)와 따로 구분하지 않고 부른다.

 

「쿼리의 사전적 정의」

 

SQL은 Structured Query Language의 약자로 데이터를 다루고 관리하는 데 사용하는 구조화된 질의 언어를 말한다. 

 

 

「다양한 쿼리의 종류」

 

▶ SQL 종류. Oracle SQL

https://www.oracle.com/index.html

▶ SQL 종류. MS-SQL

https://www.microsoft.com/en-us/sql-server/sql-server-2019

 

SQL Server 2019 | Microsoft

Transform your business with a unified data platform. SQL Server 2019 comes with Apache Spark and Hadoop Distributed File System (HDFS) for intelligence over all your data.

www.microsoft.com

 

▶ SQL 종류. Postgre SQL

https://www.postgresql.org/

 

PostgreSQL

The world's most advanced open source database.

www.postgresql.org

 

「쿼리 사용을 위한 주요 SQL 명령어」

 

초급자 수준에서는 명령어는 ①Select ②From ③Where ④Group by ⑤Having ⑥Order by 이 6가지와 조인(Join)만 알면 회사에서 실무하거나 대학생 수준에서 공부 또는 연구하기에는 충분할 듯 싶다.

 

DQL(Data Query Language), DML(Data Manipulation Language), DDL(Data Definition Language) 이런 건 기본에 익숙해진 다음 다시 되돌아와서 읽어보고 습득하는게 더 빠르다

 

▶ SQL 명령어. 기본 명령어: SELECT, FROM

Select는 컬럼을 조회하는 기능을 한다. 조회하고 싶은 Column명(열의 이름)을 기입하면 그 Column을 조회할 수 있다. 아무런 Column명을 기입하지 않고 *만 쓴다면 해당 테이블의 모든 Column을 조회하겠다는 의미이다.

From은 조회하고자 하는 대상 테이블을 명시한다. 엑셀로 치환하면 시트(Sheet)명에 해당한다.

 

▶ SQL 명령어. 조건 명령어: WHERE

Where은 조회하고자 하는 특정조건을 기입한다. 남, 여 모두가 있는 자료에서 조건을 기입하지 않다면 남, 여 데이터 모두 조회되지만 남자만 혹은 여자만 조회하고자 할대는 WHERE을 사용하면 된다.

 

▶ SQL 명령어. 데이터 그룹화 명령어: GROUP BY, HAVING

Group By는 중복된 행들을 하나로 묶어주는 기능을 한다. 보통 숫자 값의 합계나 평균을 구하고 싶을 때 사용한다.

Having은 앞서 Group by를 통해 그룹화된 결과의 조건을 기입한다. Group by를 사용했을 때만 Having의 사용이 가능하며 Where절과 동일한 기능이라고 생각하면 된다.

 

▶ SQL 명령어. 데이터 정렬 명령어: ORDER BY

Order By는 오름차순 혹은 내림차순 등 원하는 순서로 조회 결과를 정렬하는 기능을 한다.

 

▶ SQL 명령어. 테이블 생성 및 삭제 명령어: CREATE TABLE, DROP TABLE, CREATE VIEW, DROP VIEW

CREATE TAVBLE은 테이블을 새로 생성할 때 사용하고 DROP TABLE은 생성된 테이블을 삭제할 때 사용한다. 가상의 테이블인 VIEW 테이블을 생성할 때는 CREATE VIEW를, 생성된 VIEW 테이블을 삭제할 때는 DROP VIEW를 사용한다.

 

▶ SQL 명령어. 컬럼 추가 및 삭제 명령어: ALTER

기존 테이블에 컬럼을 추가하거나 삭제하고자 할 때는 ATLER를 사용한다.

 

▶ SQL 명령어. 자료 변환 명령어: CASE WHEN, UPDATE

CASE WHEN을 통해 해당열에 기입된 값을 자유롭게 변경할 수 있다. 또한 UPDATE명을 통해 원천자료를 아예 변경할 수도 있다.

 

「쿼리 사용을 편리하게 도와주는 도구 프로그램」

 

▶ SQL 도구프로그램. SQL Developer

https://www.oracle.com/tools/downloads/sqldev-downloads.html

 

▶ SQL 도구프로그램. Toad

https://www.toadworld.com/

 

Toad World

Toad World homepage Join the millions of users who trust Toad products. With nearly 20 years of development, Toad leads the way in database development, database management, and data analysis.

www.toadworld.com

 

▶ SQL 도구프로그램. Benthic Golden

https://www.benthicsoftware.com/

 

Benthic Software: Database Utilities and Tools

GoldSqall Universal Product GoldSqall is an SQL query, editing and exporting tool with native support for Oracle, PostgreSQL, MySQL, Firebird and SQL Server, as well as OLEDB and ODBC databases. Native support for Oracle, MySQL, PostgreSQL, Firebird and SQ

www.benthicsoftware.com

 


Comments.

회사에 입사하고 신입사원 시절, 엑셀에는 어느정도 익숙해졌을 무렵 자료관리가 가장 중요하다고 생각했다. 행이 늘어가는 형식으로 자료관리가 잘 되어 있다면 여러가지 오더가 오더라도 피벗(pivot)으로 가공하여 보고서화 시키면 빠르게 처리가 가능했다.

 

하지만 문제는 매일 자료가 축적되다 보니 양이 늘어나게 되고 앞서 말한대로 엑셀의 행이 50~60만개가 넘어가면 리소스 부족으로 단순하게 파일을 여는데도 한 세월이 걸렸고 수식 하나 적용하는 데도 시간이 오래 걸려 난감해졌다.

 

그러던 어느날 몇 개월간 나를 지켜보던 사수가 매일 아침 30~40분씩 일찍 오셔서 쿼리를 알려주셨다. 사수는 전산팀 출신이었는데 나같은 문과 비전공자가 오죽 답답했는지 이런 호의를 베풀어 주셨다.(지금 생각하면 둘째를 막 낳은 직후인데 이게 가능한가 싶다, 오히려 육아를 안하시려고 일찍 오신건가?)

 

쿼리를 배우고 자료를 핸들링하는 방법을 알게 되니 이것저것 다양한 방법으로 확장이 가능해졌고 더 많은 걸 알 수 있게 되었다. 개인적인 학습을 위해 다른 컴퓨터 언어를 배울 때도 배경지식이 많이 되어서 아직도 정말 감사하게 생각한다.

 

지금의 내가 어떤 후배를 위해 내 개인 시간을 소비해서 저렇게 해줄 수 있을까? 업무 시간 중에 가능하겠지만, 개인 시간을 투자해서는 힘들 것 같다. 이 글을 쓰는 이유는 자료정리의 목적이 있지만 내가 누군가에게 은혜를 받았듯이 이 글을 읽는 불특정 다수의 사람들 중 소수에게 라도 조금이나마 도움이 되었으면 좋겠다.

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형

+ Recent posts