개발일기

SQL 1주차 select문, where절 연습 본문

오늘의 공부일기/SQL 공부일기

SQL 1주차 select문, where절 연습

츄98 2023. 3. 1. 19:26

Select 쿼리문

  • 쿼리문: 데이터베이스에 명령을 내리는 것
  • Select: 데이터베이스에서 '데이터를 선택해서 가져오겠다.'
  • 구성: 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지
show tables
# 테이블을 확인(보여줘)

select * from orders
# orders라는 테이블에서 모든 필드를 가지고 와라

orders 라는 테이블 안에 order_no, created_at, course_title, user_id, payment_method, email 필드

select order_no , course_title, user_id , email from orders
# orders 테이블에서 order_no , course_title, user_id , email 필드를 가져와라

Where 절

  • Select 쿼리문과 함께 사용
  • Select 쿼리문으로 가져올 데이터에 조건을 건다.

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

select * from orders o
where o.payment_method = 'kakaopay'

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

select * from orders o 
where o.course_title = '앱개발 종합반' and o.payment_method = 'card'

예3) 웹개발 종합반을 제외한 주문데이터 보여줘!

select * from orders o 
where o.course_title != '웹개발 종합반'

course_title에는 앱개발종합반과 웹개발종합반 뿐..! 따라서 웹개발 종합반을 제외하면 모두 앱개발 종합반 데이터만 가져온다.

예4) 7월 13일, 7월 14일의 주문데이터만 보여줘!

select * from orders o
where o.created_at between '2020-07-13' and '2020-07-15'

between ~ and ~ 사용하면 범위 설정할 수 있음.

  • 7월 13일, 7월 14일의 데이터를 추출하는데.. 왜 15일까지 입력해야하는가?
  • between "2020-07-13" and "2020-07-15"로 입력할 경우,
  • between "2020-07-13 00:00:00" and "2020-07-15 00:00:00”으로 컴퓨터가 받아들이기 때문이다.

예5) 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보여줘!

select c.user_id ,c.comment, c.week from checkins c 
where c.week in (1,3)

1, 3주차 사람들의 comment만 나옴. 포함 조건은 in으로!

예6) 다음 (daum) 이메일을 사용하는 유저 데이터만 보여줘!

select * from users u 
where email like '%daum.net'

패턴 조건은 like 로!

  •  Like: 패턴으로 조건을 거는 문법, %랑 같이 씀!
  • where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
  • where email like '%a': email 필드값이 a로 끝나는 모든 데이터
  • where email like '%co%': email 필드값에 co를 포함하는 모든 데이터
  • where email like 'a%o': email 필드값이 a로 시작하고 o로 끝나는 모든 데이터

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

select * from users u 
where email like '%daum.net' limit 5

5개 데이터만 가져오기

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

select distinct(payment_method) from orders

결제수단 종류 데이터 가져오기

예9) 데이터 개수 세기: count

select count(DISTINCT(name)) as name_cnt from users

회원들의 성씨 개수, as로 별칭 붙여주기

 

그럼 이제 위 내용들을 가지고, 퀴즈를 풀어보자!!

 

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

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

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

select count(*) as cnt from users
where email like '%gmail.com' and created_at between '2020-07-12' and '2020-07-14';

퀴즈3) naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기

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

order_no, course_title, payment_method, email 데이터만 가져옴.

 

원하는 데이터를 select해서 가지고 올 수 있는 where절~

원하는 조건의 데이터를 이제는 가지고 올 수 있다!