본문 바로가기
내일배움캠프(Sparta)/엑셀보다 쉬운 SQL

[SQL] 1주차 (Database, Select, Where ...)

by mmm- 2023. 9. 14.

1. SQL

SQL (Structured Query Language)

: 데이터베이스에 요청(query)를 날려 원하는 데이터를 가져오는 것을 도와주는 언어

 

SQL 이 필요한 이유?

내가 원하는 형태로 데이터를 가지고 올 수 있게 SQL 쿼리문이 존재

DB(Database)에 명령을 내리려면 DB와 나 사이에 약속된 규칙이나 언어가 있어야 하는데 그게 바로 SQL 


2. Database

데이터베이스

: 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통

  • 데이터를 잘 가져오기 위해 사용

 

역할

  • C (Create): 데이터 생성
  • R (Read): 저장된 데이터 읽기
  • U (Update): 저장된 데이터 변경
  • D (Delete): 저장된 데이터 삭제

 

DB를 사용해 주문데이터를 저장한다면?

1. 방대한 양의 데이터 저장 가능

2. 방대한 양의 데이터에서 원하는 정보를 신속하게 가져오기 가능


쿼리문

: 데이터베이스에 명령을 내리는 것

 

3. Select 쿼리문

Select

: 데이터베이스에서 데이터를 선택해 가져오는 것

  •  어떤 테이블에서, 어떤 필드의 데이터를 가져올지로 구성

- scrpit에 show tables 를 적고 우클릭>실행>SQL문 실행(ctrl+enter)시 11개의 테이블이 있는 것을 확인할 수 있음

 

select * from orders

>> orders라는 테이블의 모든 데이터를 선택해 가져옴

 

select order_no, created_at, user_id, email from orders

>> orders라는 테이블의 order_no, created_at, user_id에 해당하는 데이터를 선택해 가져옴


4. Where 절

Where

:  Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것

 

select * from orders
where payment_method = 'kakaopay'

>> orders 라는 테이블에서 결제수단이 카카오페이인 데이터만 가져옴

 

select * from point_users
where point >= 5000

>> point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져옴

 

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

>> orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져옴

 

 

⭐ 문자열은 따옴표로 꼭 묶어줘야함. 묶어주지 않으면 테이블을 지칭하듯이 무언가를 지칭하는 줄 알기 때문

⭐ sql문은 점점 방대해지고 길어지면 굉장히 헷갈리기 때문에 줄을 잘 맞춰서 쓰는 게 중요


5. where절과 같이 쓰이는 문법

  • '같지 않음' 조건 (!=)
select * from orders
where course_title != '웹개발 종합반'

>> orders 테이블에서 '웹개발 종합반'을 제외한 데이터만 가져오기

  • '범위' 조건 (between and)
select * from orders
where created_at between '2020-07-13' and '2020-07-15'

 >> orders 테이블에서 created_at이 7월 13일, 7월 14일의 데이터만 가져오기

 

  • '포함' 조건 (in)
select * from checkins
where week in (1,3)

>> 1, 3주차 사람들에 대한 데이터만 가져오기

 

  • '패턴' 조건 (like, 문자열 규칙)
select * from users
where email like '%daum.net'

 >> 다음 이메일을 사용하는 유저들의 데이터만 가져오기

  • like 하고 나오는 문자를 대체한 것으로, %있는 자리에는 어떠한 문자가 와도 상관없음
    • 예를 들어, 'a%t' 이와 같이 표시되어 있다면 a로 시작해서 t 로 끝나는 것

6. 이외 유용한 문법

limit

: 일부데이터만 가져오기

  • 테이블이 굉장히 클 때 테이블의 구조를 보기위해 조회할 때 유용
select * from orders
where payment_method = 'kakaopay'
limit 5

>> 결제방식이 카카오페이인 데이터들 중 5개의 데이터만 가져오기

 

 

distinct

: 중복 제거해서 보기

select distinct(payment_method) from orders

>> orders 테이블에서 중복을 제외한 결제 방식 데이터 가져오기

 

 

count

: 몇 개 인지 숫자 세보기

select count(*) from orders
where payment_method = 'kakaopay'

>> 결제 방식이 카카오페이인 데이터의 수 가져오기

 

select count(distinct(name)) from users

 >> 중복 제외 성이 몇 개있는지 가져오기


7. 퀴즈 & 과제

select * from point_users
where point > 20000

>> 포인트가 20000점보다 많은 유저만 뽑기

 

select * from users
where name = '황**'

>> 성이 황씨인 유저만 뽑기

 

select * from orders
where payment_method != 'CARD'

>> 결제수단이 CARD가 아닌 주문데이터만 추출

 

select * from point_users
where point between 20000 and 30000

>> 20000~30000 포인트 보유하고 있는 유저만 추출

 

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

>> 이메일이 s로 시작하고 com로 끝나는 유저만 추출

 

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

>> 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출

 

select email from users
where name = '남**'

>> 성이 남씨인 유저의 이메일만 추출

 

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

>> gmail을 사용하는 2020/07/12~13에 가입한 유저 추출

 

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

>> gmail을 사용하는 2020/07/12~13에 가입한 유저의 수

 

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

>> 네이버 이메일을 사용하고, 웹개발 종합반이면서 카카오페이로 결제된 주문데이터 추출