회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 월 최대 15% 할인받으세요
앞선 글에서 일반 사무직으로서 우리가 친숙한 엑셀(Excel) 데이터 조회 사례를 빗대어, SQL에서의 기초 문법인 FROM과 SELECT를 살펴보았다. 이어지는 글에서는 데이터를 조회 및 추출하는 차원에서 사용하는 SQL의 주요 문법인 WHERE와 ORDER BY를 살펴보고자 한다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
앞선 글에서 일반 사무직으로서 우리가 친숙한 엑셀(Excel) 데이터 조회 사례를 빗대어, SQL에서의 기초 문법인 FROM과 SELECT를 살펴보았다. 이어지는 글에서는 데이터를 조회 및 추출하는 차원에서 사용하는 SQL의 주요 문법인 WHERE와 ORDER BY를 살펴보고자 한다.
우리가 앞서 배운 내용을 통해 FROM 명령어를 통해 필요한 정보가 담긴 시트/표를 지정해주었다. 이 중에서 SELECT 구문을 통해 필요한 정보가 담긴 열을 모두 골라냈다고 가정해보자.
보통 엑셀에서 데이터를 조회할 때 각각의 열과 행 안에 담긴 모든 정보가 필요한 경우가 있다. 하지만 대부분 ‘필터’를 통해 우리의 조건과 기준에 부합하는 정보들만 골라서 조회하는 경우가 많을 것이다.
이처럼 원하는 특정 조건에 맞는 행만 골라내어 값을 조회하기 위한 방안으로 SQL에서는 WHERE 구문을 사용한다. 그리고 WHERE에서 사용하는 조건은 엑셀과 마찬가지로 크게 5가지 유형으로 나뉜다.
가령 특정 열의 값이 내가 찾고자 하는 특정 값과 일치하는지, 혹은 일치하지 않는지 비교하기 위해 사용한다. 일치하는 값을 찾고자 할 때는 등호(=)를, 일치하지 않는 값을 찾고자 할 때는 등호의 반대(!=)를 사용한다. (!는 NOT을 의미한다.)
숫자 또는 날짜 형태의 값 중에서 내가 찾고자 하는 값이 특정 수, 또는 날짜를 기준으로 크거나 작은, 이르거나 늦은 경우(~보다 큰 값, ~보다 작은 값, ~보다 빠른 날짜, ~보다 늦은 날짜 등)를 찾기 위해 사용한다.
숫자나 날짜의 경우, ‘크다, 작다’와 같이 한쪽 방향의 조건이 아니라 ‘~사이’처럼 범위를 기준으로 사용하기도 한다. 이때는 BETWEEN a AND b의 조건을 사용한다. 반대로 ~사이가 아니라는 것을 조건으로 걸고 싶다면 앞에 NOT을 붙여 NOT BETWEEN a AND b로 사용하면 된다.
또는 연속되는 범위가 아니라, 특정 몇 개의 항목 중에서 해당하는 것을 골라내는 경우도 있다. 이때는 IN(a, b, c,...)을 사용할 수 있다. 마찬가지로 해당 항목 중에 있는 게 아니라는 것을 조건으로 걸고 싶다면 앞에 NOT을 붙여 NOT IN(a, b, c,...)을 사용할 수 있다.
문자 형태의 데이터에서 특정 글자나 단어로 시작하거나, 특정 글자나 단어로 끝나거나, 혹은 중간에 특정 글자나 단어를 포함하는 것들을 골라내고 싶은 경우에는 LIKE를 사용한다. BETWEEN, IN과 마찬가지로 반대로 제외하고 싶다면 앞에 NOT을 붙여 NOT LIKE를 이용할 수 있다.
LIKE '문자열%': 특정 문자열로 시작하는 것들을 모두 골라낸다
LIKE '%문자열': 특정 문자열로 끝나는 것들을 모두 골라낸다
LIKE '%문자열%': 특정 문자열이 어딘가에라도 포함되어있다면 모두 골라낸다
※ 문자열의 경우 작은따옴표('')를 이용해 감싸주어야만 문자열로 인식한다.
※ %는 '(앞 또는 뒤에) 무슨 글자가 몇 글자가 있든 상관 않는다'는 의미다. 예를 들어 'a%'라고 한다면 apple, app, airplane 등과 같은 문자형 데이터들이 해당하고, '%s'라면 as, bus, toss 같은 문자형 데이터들이 해당된다. 또 '%a%'라고 한다면 문자 내에 어디든 a가 하나라도 포함되어 있는 문자형 데이터를 모두 포함한다.
엑셀에서 데이터를 기록하고 관리하다 보면 특정 열 또는 특정 행의 값이 비어 있는 경우도 있다. 기록이 누락되었든, 기록한 것을 지웠든, 혹은 기록이 없는 게 정상이든 여러 이유로 값이 비어 있는 경우, 이를 골라내기 위해 '비어 있다'라는 의미의 IS NULL을 사용하거나 혹은 '비어 있지 않다'라는 의미의 IS NOT NULL을 사용할 수 있다.
엑셀에서도 숫자, 날짜 등의 데이터를 취급하다 보면 편의에 따라 정렬 순서를 바꾼다. 가령 가격이 큰 것부터 작은 것 순으로 내림차순을 하기도 하고, 등급이 높은(1등급) 것부터 낮은(9등급) 것까지 오름차순을 하기도 한다.
이때 우리는 엑셀에서 필터가 적용된 테이블을 클릭하여 아래와 같이 선택한다.
1) 어떤 열을 기준으로 정렬할 것인지
2) 그 열을 기준으로 어떤 방식으로 정렬할 것인지
SQL에서는 이를 ORDER BY라는 명령어를 통해 적용한다
ORDER BY 칼럼1
ORDER BY 칼럼1 ASC
“칼럼1을 기준으로 오름차순으로 정렬해줘”
※ ASC라고 따로 명시하지 않아도 오름차순이 기본값
※ ASC는 Ascending(오름차순)의 약자다.
ORDER BY 칼럼1 DESC
“칼럼1을 기준으로 내림차순으로 정렬해줘”
※ DESC는 Descending(내림차순)의 약자다.
ORDER BY 칼럼1 DEC, 칼럼2 ASC
“칼럼1을 기준으로 내림차순으로 정렬한 뒤 다시 칼럼2를 기준으로 오름차순으로 정렬해줘”
※ 엑셀과 달리 여러 개의 칼럼을 차례대로 이용하여 정렬할 수 있다. 이 경우 첫 번째 칼럼을 기준으로 정리하고 그 안에서 다시 다음 칼럼을 기준으로 재정렬한다.
이번 글에서는 우리가 엑셀에서 흔히 사용하는 필터와 정렬을 기준으로 SQL의 WHERE와 ORDER BY를 살펴보았다. 이를 통해 우리는
하는 것에 대해 살펴보았다.
다음 글에서는 이러한 기초 문법에서 조금 더 나아가 특정 값을 기준으로 분류하여 그룹핑할 때 사용하는 GROUP BY와 그룹핑 후 사용하는 조건인 HAVING, 그리고 그룹핑 후 해당 그룹에 대한 정보를 드러내는 집계 함수에 대해 살펴보고자 한다.