[마케터를 위한 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 살펴보기


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.