Where 절

임소영·2022년 11월 3일
0

Where 절의 개념

Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미해요.

Select 쿼리문에 Where 절 함께 써보기

예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!

select * from orders
where payment_method = "kakaopay";

예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!

select * from point_users
where point > '5000';

예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!

select * from orders
where course_title = "앱개발 종합반" 
and payment_method = "card";

Where 절 같이 연습해보기

Q1) 포인트가 20000점보다 많은 유저만 뽑아보기!

select * from point_users
where point > 20000;

Q2) 성이 황씨인 유저만 뽑아보기

select * from users
where name = "황**";

Q3) 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!

select * from orders
where course_title = "웹개발 종합반" 
and payment_method = "CARD";

Where 절과 자주 같이 쓰는 문법 써보기

Case1) '같지 않음' 조건 걸어보기

개념)

'같지 않음' 조건은 != 로 걸 수 있습니다.

Q)결제수단이 CARD가 아닌 주문데이터만 추출해보기

select * from orders
where payment_method != 'CARD';

Case2) '범위' 조건 걸어보기

개념)

'범위' 조건은 between 으로 걸 수 있어요.

Q)20000~30000 포인트 보유하고 있는 유저만 추출해보기

select * from point_users
where point between 20000 and 30000

Case3) '포함' 조건 걸어보기

개념)

'포함' 조건은 in 으로 걸 수 있어요.

Q) 1, 3 주차 사람들의 '오늘의 다짐'만 추출해보기

select * from checkins 
where week in (1, 3);

Case4) '패턴' (문자열 규칙) 조건 걸어보기

개념)

'패턴' 조건은 like 으로 걸 수 있어요.

Like의 다양한 사용법)

예1) email 필드값이 a로 시작하는 모든 데이터

where email like 'a%':

예2) email 필드값이 a로 끝나는 모든 데이터

where email like '%a'

예3) email 필드값에 co를 포함하는 모든 데이터

where email like '%co%'

예4) email 필드값이 a로 시작하고 o로 끝나는 모든 데이터

where email like 'a%o'

Q1) 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기

select * from users
where email like 's%com';

Q2) 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기

select * from users
where email like 's%com' 
and name = "이**";

이외 유용한 문법 배워보기

Case1) 일부 데이터만 가져오기: Limit

개념)

일부 데이터만 가져오는 Limit이라는 기능이 있습니다.

예)

select * from orders 
where payment_method = "kakaopay"
limit 5;

Case2) 중복 데이터는 제외하고 가져오기: Distinct

예)

select distinct(payment_method) from orders;

Case3) 몇 개인지 숫자 세보기: Count

예)

select count(*) from orders

Case4) [응용] Distinct와 Count를 같이 써보기

예)

select distinct(name) from users;

그리고, 여기에 count를 입혀주면 몇 개의 성씨가 있는지 알 수 있습니다.

SELECT count(distinct(name)) from users;

퀴즈 풀어보기

Q1) 성이 남씨인 유저의 이메일만 추출하기

select email from users 
where name = "남**";

Q2) Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기

select * from users
where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";

Q3) Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기

select count(*) from users

where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";

Q4) naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터를 추출하는 코드를 작성해주세요.

select * from orders
where email like '%naver.com'
and course_title = '웹개발 종합반'
and payment_method = 'kakaopay'

출처 : [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 1주차

0개의 댓글