[마케터를 위한 SQL #2] WHERE Clause 살펴보기
이번 글에서는 데이터 조회 시, 필요한 데이터만 필터링 할 수 있도록 데이터의 조회 조건을 명시해주는 WHERE Clause 에 대해서 살펴보도록 하겠습니다. SQL 을 처음 접하시는 분이라면, 이전 포스팅을 참고해 주시기 바랍니다.
Link: [embed]http://www.popit.kr/마케터를-위한-sql-데이터-조회를-위한-select-clause/[/embed]
[toc]
데이터베이스 용어 및 개념
주요 Commands
Database 에는 여러가지 유형은 명령어 종류들이 있습니다. 지난 글 에서는, 그 중 SELECT 의 기본에 대해서 살펴봤는데, 너무 많은 개념들을 한꺼번에 설명드리면 재미도 없고 어려워지기 때문에 단계적으로 조금씩, 필요한 만큼만 설명을 드리려고 합니다. 오늘은 여러가지 SQL의 Command 들 중 가장 중요하고 많이 사용되는 Command 에 대한 개념을 설명드리고자 합니다.
- SELECT - 데이터베이스에서 데이터를 조회하는 명령어
- UPDATE - 데이터베이스에 적재된 데이터를 업데이트 하는 명령어
- DELETE - 데이터베이스에 적재된 데이터를 삭제하기 위한 명령어
- INSERT INTO - 데이터베이스에 데이트를 삽입하는 명령어
- CREATE DATABASE - 데이터베이스 생성 명령어
- ALTER DATABASE - 데이터베이스의 변경(이름 등) 명령어
- CREATE TABLE - 데이터베이스 내의 테이블 생성 명령어
- ALTER TABLE - 테이블의 스키마 변경 명령어
- DROP TABLE - 테이블 삭제 명령어
- CREATE INDEX - 인덱스를 생성하는 명령어 (주로 검색을 할 때 사용되는 Key 값)
- DROP INDEX - 인덱스를 삭제하는 명령어
SQL 에서는 일반적으로 Data Definition Language(DDL)와 Data Manipulation Language(DML)의 형태로 주요 Command 를 구분합니다. DDL은 CREATE 와 같은 데이터의 스키마에 대한 정의를 하는 부분을 말하며, DML은 데이터를 조회하거나, 추가/삭제 하는 등의 데이터를 다루는 Command 들을 말합니다. DDL 은 물론이고, SELECT 구문을 제외한 대부분의 DML Command 들도 데이터를 분석하는 분석가나 마케터가 직접 다루게 되는 경우는 많지 않습니다. 때문에 주로 SELECT 사용법을 위주로 설명을 드릴 예정입니다.
인덱스(INDEX)
위의 주요 명령어 들 중 지난글에서 설명 드리지 않은 INDEX 라는 개념이 있는데, 이는 데이터의 조회 시 빠른 응답속도를 보장하기 위해 데이터를 빠르게 찾아갈 수 있도록 추가적으로 생성된 INDEX 정보라고 보시면 됩니다.
텍스트 컬럼 vs. 숫자형 컬럼
Data Types 에 대한 내용은 별도의 글을 통해 여러번 자세히 소개를 드릴 예정입니다. 여기서는 여러가지 데이터 유형들 중 텍스트와 숫자형 데이터 타입이 존재한다는 것만 짚고 넘어가겠습니다. 이유는 이번 글에서 설명드리고자 하는 WHERE 구문의 문법에 텍스트 유형은 작은 따옴표(') 를 사용해 줘야하기 때문입니다. 대부분의 RDB 에서는 작은 따옴표 대신 큰 따옴표(") 을 사용해도 무방하며, 자세한 사항은 예제를 통해 살펴보겠습니다.
샘플 데이터
이번 글 에서도 지난번 포스팅에서 사용되었던 간단한 데이터 샘플을 가지고 설명을 드리겠습니다.
- Database 명 : POPIT
- Table 명 : USER_INFO
[table id=2 /]
Operators
아래는 WHERE 절에서 사용 가능한 Operator 의 종류들 입니다.
[table id=3 /]
각각의 Operator 에 대한 설명은 예제를 통해서 설명드리도록 하겠습니다.
Sample Query
Equal(=)
아래는 Name 컬럼의 값이 '태희' 에 해당하는 데이터의 USER_NAME, ADDRESS 를 조회하는 쿼리 입니다.
1 2 3 4
SELECT USER_NAME, ADDRESS FROM POPIT.USER_INFO WHERE USER_NAME='태희' ;
USER_NAME 이라는 컬럼에 저장된 데이터의 유형이 텍스트이기 때문에, 조건절에 '태희' 와 같이 작은 따옴표를 통해 조건으로 주고자 하는 값을 표현해 준 부분을 보시면 되겠습니다. 위 쿼리의 실행 결과는 아래와 같습니다.
1 2
USER_NAME ADDRESS 태희 서울
숫자형 컬럼인 AGE 에 대해서는 아래와 같이 따옴표 없이 표현해 주며,
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE=19 ;
위 쿼리의 실행 결과는 아래와 같습니다.
1 2
USER_NAME AGE 태희 19
Not equal(<> 또는 !=)
특정 값을 제외하고 필요한 데이터를 조회하는 경우는 아래와 같이 사용합니다.
1 2 3 4
SELECT USER_NAME, GENDER FROM POPIT.USER_INFO WHERE GENDER <> '남자' ;
GENDER 가 '남자'가 아닌 데이터에 대해 USER_NAME, GENDER 를 조회하는 쿼리이며, Hive 에서는 <> 대신 != 를 사용해도 결과는 동일합니다. 실행 결과는 아래와 같습니다.
1 2 3
USER_NAME GENDER 태희 여자 혜교 여자
초과(>), 미만(<), 이상(>=), 이하(<=)
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE > 37 ;
위 쿼리는 AGE 가 37을 초과하는 데이터를 조회하겠다는 의미이며, 결과는 아래와 같이 1건만 나옵니다.
1 2
USER_NAME AGE 정재 41
조건 절을 아래와 같이 이상(>=)으로 바꾸게 되면,
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE >= 37 ;
위 쿼리는 AGE 가 37인 동건이 포함되어 아래와 같이 2건의 결과가 조회 됩니다.
1 2 3
USER_NAME AGE 동건 37 정재 41
범위(BETWEEN)
AGE 가 37 이상, 45 이하의 범위 조건에 대한 쿼리 작성 샘플 입니다.
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE BETWEEN 37 AND 45 ;
위 쿼리는 아래와 동일한 쿼리이며, AND 혹은 OR 연산자를 통해 여러개의 조건을 조합하여 사용할 수 있습니다.
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE >=37 AND AGE <= 45 ;
AND 와 OR 연산자를 통한 조건절의 혼합 사용
WHERE 조건절은 AND, OR 연산자를 사용하여 아래와 같이 혼합 사용이 가능합니다.
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE AGE >=37 AND AGE <= 45 OR USER_NAME='태희' ;
위 쿼리는 나이(AGE)가 37 이상, 45 이하 이거나, 이름(USER_NAME)이 '태희' 인 데이터를 조회하는 쿼리이며 결과는 아래와 같습니다.
1 2 3 4
USER_NAME AGE 태희 19 동건 37 정재 41
아래와 같이 괄호기호를 활용하여 복잡한 조건을 구성할 수도 있습니다.
1 2 3 4
SELECT USER_NAME, AGE FROM POPIT.USER_INFO WHERE (AGE >=37 AND AGE <= 45) OR (AGE>17 AND AGE <20) ;
위 쿼리는 나이(AGE)가 37이상이며 45 이하이거나, 17을 초과하고 20미만인 데이터의 USER_NAME, AGE 컬럼을 조회하는 쿼리 입니다.
패턴 검색(LIKE)
LIKE 조건은 텍스트 조회 시 특정 단어와 유사한 패턴을 가지고 있는 값을 조회할 때 사용합니다.
1 2 3 4
SELECT ADDRESS FROM POPIT.USER_INFO WHERE ADDRESS LIKE '서%' ;
위 쿼리는 주소(ADDRESS) 컬럼의 값이 '서' 로 시작하는 모든 데이터를 조회하는 쿼리이며, 조회 결과는 아래와 같이 '서울' 값을 갖는 데이터들 입니다.
1 2 3
NAME ADRESS 태희 서울 동건 서울
중간에 표현된 값이나, 마지막에 표현된 값을 '%서%', '%서' 등의 형태로 표현하는 것도 가능합니다. LIKE 를 통한 패턴 검색 이외에, 정규표현식(Regular Expression)을 활용한 방법이 있으며, 이는 별도의 글을 통해 포스팅 하겠습니다.
IN
몇개의 값을 지정해서 조회하는 경우에는 AND 조건을 사용하는 것보다, 아래와 같이 IN 절을 사용하는 것이 더 편리한 경우가 많습니다.
1 2 3 4
SELECT USER_NAME FROM POPIT.USER_INFO WHERE USER_NAME IN ('태희','동건') ;
마치며
데이터 조회 시 사용할 수 있는 WHERE 조건에 대한 사용법을 간단하게 살펴보았습니다. 다음번 포스팅에서는 SQL 을 쓰는 가장 중요한 이유중 하나인 GROUP BY 구문에 대해 살펴보도록 하겠습니다.
다음 글 보러가기 : [마케터를 위한 SQL #3] GROUP BY 살펴보기