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'
>> 네이버 이메일을 사용하고, 웹개발 종합반이면서 카카오페이로 결제된 주문데이터 추출
'내일배움캠프(Sparta) > 엑셀보다 쉬운 SQL' 카테고리의 다른 글
[SQL] 4주차 (Subquery, with ...) (0) | 2023.09.17 |
---|---|
[SQL] 3주차 (Join, Union) (0) | 2023.09.16 |
[SQL] 2주차 (Group by, Order by ) (0) | 2023.09.15 |