본문 바로가기
개발 일지/SQL

[ 스파르타 / SQL ] SELECT, WHERE, LIMIT, DISTINCT 절 사용법

by CODESIGN 2022. 11. 4.

* 과 from


* 은 모든 필드를 불러온다. 그리고 모든 필드(*) 중 FROM orders에서 들고 온다는 의미이다.

SELECT * FROM orders

 

 

WHERE


WHERE 절은 SELECT 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미한다.

SELECT order_no, created_at, user_id, email FROM orders

 

 

예제 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'

 

 

QUIZ #1


아래는 퀴즈로 나온 문제인데 코딩과 비슷해서 쉽게 풀었다.

 

 

[퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기!

SELECT * FROM point_users  
WHERE point > 20000

 

 

[퀴즈] 성이 황 씨인 유저만 뽑아보기

SELECT * FROM users 
WHERE name = "황**"

 

 

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

SELECT * FROM orders 
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD'

 

 

show tables


show tables를 사용하여 전체적인 테이블을 보고 필드명 확인하고 값을 확인하고 WHERE 절을 사용하여 불러오면 된다.

 

 

'같지 않음' 조건 


SELECT * FROM orders
WHERE course_title != '웹개발 종합반'

 

 

'범위' 조건


select * from orders
where created_at BETWEEN '2020-07-03' and '2020-07-15'

 

 

'포함' 조건


'week 중 1 또는 3을 가져와라'라는 의미이다.

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

 

 

QUIZ #2


 

처음 두 개는 배운 것이라 쉽게 풀었는데 마지막에 s로 시작하고 com으로 끝나는 방법을 적는 방법을 몰랐는데 퀴즈 덕분에 하나 더 배웠다.

 

 

[퀴즈] 결제수단이 CARD가 아닌 주문 데이터만 추출해보기

SELECT * FROM orders
WHERE payment_method != 'CARD'

 

 

[퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기

SELECT * FROM point_users 
WHERE `point` between 20000 AND 30000

 

 

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

SELECT * FROM users 
WHERE email LIKE 's%com' AND name = '이**'

 

LIMIT


LIMIT은 큰 데이터가 주어질 때 구조의 확인을 위해 조금만 불러올 때 사용하면 좋다.

 

예제) paymont_method가 kakaopay일 때 결과물을 5개만 보여준다. 

SELECT * FROM orders 
WHERE payment_method = 'kakaopay'
limit 5

 

 

DISTINCT


중복 제거하고 보기가 가능해진다.

 

예제) paymont_method에는 종류가 4가지(kakaopay, CARD, TAXBILL, MONEY)가 있다. 하지만 데이터가 많을 경우 종류를 파악하기 위해 전체를 확인하기 힘들다. 이때 중복을 제거하고 데이터를 가져오면 가짓수를 확인할 수 있다.

SELECT DISTINCT (payment_method) FROM orders

 

 

count(*)


orders데이터의 총개수를 알려준다.

SELECT count(*) FROM orders

 

orders데이터 중 paymont_method가 kakaopay일 때의 총개수를 알려준다.

SELECT count(*) FROM orders
WHERE payment_method = 'kakaopay'

 

 

count + DISTINCT


name에는 이름의 성들이 있다. 이때 count와 DISTINCT를 사용하여 총 성의 가짓수를 확인할 수 있다.

SELECT count(DISTINCT(name) FROM orders

 

 

QUIZ #3


아래는 퀴즈로 나온 문제인데 코딩과 비슷해서 쉽게 풀었다.

 

[퀴즈] 성이 남 씨인 유저의 이메일만 추출하기

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

 

[퀴즈] Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기

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

 

[퀴즈] 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";

 

 

'개발 일지 > SQL' 카테고리의 다른 글

[ 스파르타 / SQL ] Group by  (0) 2022.12.03
[ 스파르타 / SQL ] DBeaver 설치 방법 & SQL절 예제  (2) 2022.11.03

댓글