
이번 포스팅에서는 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 구문에 대해 알아볼게요.
'DATA' 카테고리의 다른 글
| 마케터를 위한 통계 | 마케터한테 기본적인 통계 기초가 필요한 이유 (0) | 2024.03.12 |
|---|---|
| 마케터를 위한 실무 SQL 노트 ④ JOIN (0) | 2023.02.26 |
| 마케터를 위한 실무 SQL 노트 ③ GROUP BY , HAVING , ORDER BY (0) | 2023.02.14 |
| 마케터를 위한 실무 SQL 노트 ① SQL을 공부해야 하는 이유 (0) | 2023.02.05 |
| 넷플릭스의 언택트마케팅 : ' 넷플릭스 파티 (Netflix Party) ' (0) | 2020.03.28 |