* 과 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 |
댓글