본문 바로가기

DATA

마케터를 위한 실무 SQL 노트 ② SELECT,WHERE

반응형

이번 포스팅에서는 SQL 구문 2가지 SELECT, WHERE을 알아보도록 하겠습니다. 이 2가지 구문을 알게되면 여러분은 특정 조건에 맞는 데이터추출할 수 있게될거에요.

 

Table과 Column

구문을 배우기 전에 먼저 알아야 할 개념이 있어요. 바로 '테이블'과 '컬럼'이에요. 

테이블은 행(row)와 열(column)로 이루어진 데이터를 뜻해요. 열(column)은 테이블에서 세로 줄을 의미합니다. 

우리가 주로 사용하는 엑셀을 떠올리시면 이해하기 편하실거에요. 

 SELECT 

 

SELECT는 데이터베이스에서 가져올 데이터를 선택할 때 사용하는 구문이에요. 주로 SELECT + FROM 형태로 많이 쓰여요.

보통 문서 불러올 때 [파일 - 열기] 와 같은 기능이라고 생각하시면 쉬워요.

 

SELECT 뒤에는 원하는 컬럼을, FROM 뒤에는 원하는 테이블을 입력해 주시면 돼요. 

SELECT + [컬럼]
FROM + [테이블]

[예제]

▼ user_profile 테이블 

name phone gender join_date last_login_date info_term_agreement
홍길동 010-1234-5678 2023-01-12 2023-02-02 1
홍길순 010-5678-1234 2023-02-01 2023-02-01 0

위와 같이 유저의 정보를 담은 user_profile 테이블이 있다고 할게요. 테이블에서 이름 컬럼만 가져오려면 쿼리를 어떻게 작성할 수 있을까요?

SELECT name
FROM user_profile

[결과]

name
홍길동
홍길순

컬럼을 여러가지 가져오고 싶은 경우 콤마를 활용하여 나열해 주세요.

SELECT name,phone,gender
FROM user_profile

[결과]

name phone gender
홍길동 010-1234-5678
홍길순 010-5678-1234

만약 테이블에 어떤 컬럼이 있는지를 모르거나, 전체 컬럼을 봐야하는 경우에SELECT 뒤에 *을 붙이면 전체 컬럼을 불러올 수 있어요.

SELECT *
FROM user_profile

[결과]

name phone gender join_date last_login_date info_term_agreement
홍길동 010-1234-5678 2023-01-12 2023-02-02 1
홍길순 010-5678-1234 2023-02-01 2023-02-01 0

 WHERE 

데이터를 요청할 때는 보통 특정 조건을 붙이는 경우가 많아요. WHERE 구문은 조건에 맞는 데이터를 추출하기 위해 사용되는 구문이에요.

엑셀에서 '필터'의 개념과 동일합니다. ① 데이터를 추출하고 ② 원하는 조건을 걸어주시면 돼요.

SELECT + [컬럼]
FROM + [테이블]
WHERE + [조건식];

조건식을 작성할 때는 보통 연산자를 활용해요. 연산자에는 값을 비교하는 비교연산자, 값의 참과 거짓을 판단하는 논리연산자가 있어요.

 

1] 비교연산자

연산자 예시
= A와 B가 같다 A=B
!= A와 B가 같지 않다 A!=B
> A가 B보다 크다  A>B
>= A가 B보다 크거나 같다 A>=B
< A가 B보다 작다 A<B
<= A가 B보다 작거나 같다 A<=B

[예제]

▼ user_profile 테이블 

name phone gender join_date last_login_date info_term_agreement
홍길동 010-1234-5678 2023-01-12 2023-02-02 1
홍길순 010-5678-1234 2023-02-01 2023-02-01 0
김지수 010-0000-0001 2022-12-23 2023-02-11 1
윤다영 010-0000-1231 2021-07-21 2021-12-01 1

Q. 최근 한 달 이내에 로그인한 유저의 이름,연락처,성별을 추출하세요. ( * 오늘 날짜 2023-02-11)

SELECT 이름,연락처,성별
FROM user_profile 
WHERE last_login_date <= '2023-02-11';

Q. 성별이 '여자'가 아닌 유저를 추출하세요. 

SELECT *
FROM user_profile
WHERE gender != '여'; 

 

2] 논리연산자

연산자 예시
AND A와 B 모두 맞다 A AND B
OR A 또는 B 중 하나가 맞다 A OR B
BETWEEN A와 B 사이다 BETWEEN A AND B 
IN  A,B 목록에 포함된다 IN(A,B)
NOT A가 아니다 NOT A
LIKE A 문자열이 포함된다 LIKE %A%

LIKE의 경우 와일드카드를 조합해서 조건을 조금 더 구체화할 수 있어요. > 와일드카드 자세히 알아보기

 

[예제]

▼ user_profile 테이블 

name phone gender join_date last_login_date info_term_agreement order_type order_code
홍길동 010-1234-5678 2023-01-12 2023-02-02 1 BN BN100123213
홍길순 010-5678-1234 2023-02-01 2023-02-01 0 BN BN123123212
김지수 010-0000-0001 2022-12-23 2023-02-11 1 BN BN100339393
윤다영 010-0000-1231 2021-07-21 2021-12-01 1 BR BR100194941

* order_code 에 'BN'을 포함하면 새 상품, 'BR'을 포함하면 '중고 상품' 을 뜻한다고 하자.

 

Q. 가입일이 2023년 1월 ~ 2월 사이인 유저를 추출하세요.

SELECT *
FROM user_profile 
WHERE join_date Between '2023-01-01' AND '2023-02-28';
▶︎ 가입일이 1월 1일부터 2월 28일 사이에 있는 유저를 뽑아줘 

Q. 새 상품을 구입한 유저의 이름을 추출하세요.

* 연산자 in을 활용한 경우

SELECT 이름
FROM user_profile 
WHERE order_type in('BN'); 
▶︎ 주문 타입이 BN 에 포함되는 컬럼을 뽑아줘 

* 연산자 like를 활용한 경우 

SELECT 이름
FROM user_profile 
WHERE order_code like '%BN%';  
▶︎ 주문코드 'BN'을 포함하는 컬럼을 뽑아줘

이렇게 실무에서 가장 많이 쓰이는 기본 구문 SELECT,WHERE 2가지를 알아보았습니다.

다음 포스팅에서는 데이터를 정렬하는 ORDER BY와 , 동일한 값을 가지는 로우를 그룹화하는 GROUP BY 구문에 대해 알아볼게요. 

 

 

 

반응형