스파르타 코딩 클럽 SQL강의 수강을 시작했다.
0주차 (튜토리얼 총 3개 강의)와 1주차 (총 7개 강의)중 4개의 강의를 수강함.
하루에 들을 수 있는 강의가 8개인데 0주차, 1주차 수업을 들으면 1주차 수업을 다 들을 수 없는 게 좀 아쉬운 부분이었다.
강의 3개 남기고 덩그러니 개발일지 써본다...ㅎ
1. 환경 세팅하기
가장 먼저 세팅한 것은 DBeaver 설치
SQL 언어 중 MySQL을 선택 후 스파르타 코딩클럽 DB에 연결해 줬다. (여기까지는 스무스한 전개)
튜터분을 따라 selcet 문을 따라 썼는데 아니 벌써 에러코드 실화인가 싶고
다행히도 Q&A 시스템이 잘 되어있어서 (즉문즉답) 간단히 해결했다.
Data source를 스파르타로 선택해주면 되는 아-주 간단쓰한 문제였음 ㅎㅎ
또 디폴트 세팅인 라이트모드를 다크모드로 바꾸고싶었는데 즉문즉답 게시판에도 윈도우환경에 대한 이야기밖에 없었...
구글링하면서 바로 찾았다...
요 블로그 참고하면 맥os기반에서 DBeaver 다크모드 변경방법 찾을 수 있으니까 참고하면 좋을 듯
2. SQL과 DB 살펴보기
2-1. 쿼리(query)문이란?
데이터베이스 DB에 명령을 내리는 것을 의미
여기서 Select 쿼리문은, DB에서 '데이터를 선택해서 가져오겠다' 라는 의미수업의 목적 = 데이터를 잘 뽑아내는 것.따라서 수업의 모든 쿼리문에는 Select가 들어간다.
2-2. Select 쿼리문 구성어떤 테이블에서 어떤 필드의 데이터를 가져올지 로 구성된다.
- 테이블 : 데이터가 담긴 엑셀 시트와 동일한 개념- 필드 : 테이블 내 각각 데이터 카테고리
ex) order_no, created_at 등
3. Select, Where 절
3-1. Where 절의 개념
: Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미
- oders라는 테이블에서 payment_method 중 'kakaopay'로 결제한 데이터만 추출
SELECT * FROM orders
WHERE payment_method = 'kakaopay'
*작은 따옴표 ''를 붙이는 이유?
: 문자열을 지칭하기 위함.
문자열이 아닌 경우 orders(테이블명) payment_method(필드명 지칭)으로 인식함
3-2. Seclet 쿼리문에 Where 절 함께 사용하기
: (1) 원하는 테이블과 (2) 조건을 명시해주면 됨
예시1) 포인트가 20,000점 보다 많은 유저만 뽑아보기
SELECT * FROM point_users
WHERE point > 20000
point_users 테이블에서 point 필드(조건)가 20000이상인 데이터 출력
*숫자에는 '' 따옴표 사용하지 않음
예시2) 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기 (and 조건 사용)
SELECT * FROM orders
WHERE course_title = '앱개발 종합반'
and payment_method = 'CARD'
3-3. Tips
1) show tables로 어떤 테이블이 있는지 먼저 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 Select * from 테이블명 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)번 해보기
4) 테이블을 찾았다면 조건 걸 필드 찾기
5) Select * from 테이블명 Where 조건으로 쿼리 완성!
4. Limit과 Distinct, Count, etc...
4-1. 일부 데이터만 가져오기 : Limit
데이터의 양이 방대한 경우 데이터를 로딩하는데 시간이 오래 걸리면? = 비효율적
이런 경우를 대비해, 일부 데이터만 가져오는 Limit이라는 기능 사용
SELECT * FROM orders
WHERE payment_method = 'kakaopay'
limit 5
조건문에 맞는 데이터 딱 5개만 출력됨
+ 어떤 기준으로 5개만 추출되는지는 몰라서 즉문즉답 찾아보니 DB제품에 따라 차이가 있지만 기본적으로는 데이터가 쌓인 기준으로 값을 가져오게 된다고 함
4-2 중복 데이터는 제외하고 가져오기 : Distinct
고객이 사용한 결제수단이 어떤 종류가 있을지 궁금할 경우 distinct 기능을 사용해 데이터 필드의 종류를 알 수 있다.
SELECT DISTINCT(payment_method) from orders
Select Distinct(가져올 필드 이름) From (가져올 테이블 이름)
4-3 몇 개인지 숫자 세보기 : Count
내가 지정한 조건의 데이터가 몇개인지 세어볼 때 사용
SELECT count(*) from orders
count된 숫자가 Results 창에 나타남
+응용
SELECT COUNT(DISTINCT (name)) FROM users
users 테이블에서 name이 중복되지 않은 데이터의 수
4-4 ETC...
- 같지 않음 조건 : !=
SELECT * FROM orders
WHERE payment_method != 'kakaopay'
#카카오페이가 아닌 페이먼트를 사용한 데이터만 추출
- 범위 조건 : between '범위1' and '범위2'
SELECT * FROM orders
WHERE created_at BETWEEN '2020-07-13'and'2020-07-15'
#2020-07-13~15일까지의 가입자 데이터가 추출
- 포함 조건 : where 필드명 in (1,3)
SELECT * FROM checkins
WHERE week in (1,2)
#week필드에서 1과 2가 포함하는 데이터만 추출
- 패턴 (문자열 규칙) 조건 : like '%naver.com'
SELECT * FROM users
WHERE email like 'a%daum.net'
#email 'a'로 시작하고 끝이 'daum.net'으로 끝나는 데이터만 추출
---
쭉 정리하면서 복습안했으면 like나 in은 헷갈렸을 것 같지만 정리해서 참...다행....
1주차는 내일 마저 복습으로 마무리 해야겠다. 4주차 까지 무사히 완강하길 바라며 아디오슷
'SQL' 카테고리의 다른 글
[스파르타 코딩 클럽] SQL 강의 DAY2 : GROUP BY와 ORDER BY (0) | 2023.01.08 |
---|