- 데이터베이스
- Google BigQuery
- SQL 기초 문법
- FROM, SELECT
- AS, LIMIT, DISTINCT
- WHERE, 논리연산자, BETWEEN, IN, LIKE, IS NULL
- 집계함수
- GROUP BY
🔹 데이터베이스 (Database)
: 데이터의 집합
🔹 DBMS (Database Management System)
: 데이터베이스를 효율적으로 관리하는 소프트웨어
🔹 관계형 모델 (Relational Model)
: 데이터를 표 형태로 구조적으로 관리하는 모델
🔹 RDBMS (Relational Database Management System)
: 관계형 모델 기반의 데이터베이스를 관리하는 시스템
: 대표적으로 Oracle, DB2, MySQL, SQLite 등이 있다.
🔹 관계형 데이터베이스의 구성 요소
🔹 키(Key)
🔹 Google BigQuery
: 페타바이트급 규모의 데이터를 실시간으로 관리하고 분석할 수 있게 해주는 관리형 서버리스 컴퓨팅 데이터 웨어하우스
: 데이터 추가, 수정은 못함. 조회만 가능.
: 실제 조회한 양만큼 과금하는 유료 프로그램. 월 1TB까지는 무료. 학습 수준에서는 무료로 사용 가능
🔹 SQL (Structured Query Language)
: 스토리지 언어의 표준
: DB에 접근할 때 사용하는 프로그래밍 언어
🔹 SQL 명령어 분류
🔹 FROM
: 데이터를 불러올 테이블 지정
🔹 SELECT
: 지정된 테이블에서 데이터를 불러올 필드명 지정
# 회원(users) 테이블에서 모든 데이터를 조회
select *
from `thelook_ecommerce.users`
# 상품(products) 테이블에서 이메일 정보를 조회
select email
from `thelook_ecommerce.products`
🔹 AS
: 필드 또는 테이블의 별칭 지정
# products 테이블을 pdt라는 별칭 지정
select pdt.name
from `thelook_ecommerce.products` as pdt
🔹 LIMIT
: 불러올 행의 개수 지정
# 3개의 행만 가져오기
select *
from `thelook_ecommerce.products`
limit 3
🔹 DISTINCT
: 중복 데이터 제거
# category, city 필드에서 유일값만 가져오기
select distinct category, city
from `thelook_ecommerce.products`
🔹 WHERE
: 데이터를 불러오는 조건 지정
# 회원(users) 테이블에서 나이가 20 이사 60 이상인 사람만 불러오기
SELECT *
FROM `thelook_ecommerce.users`
WHERE age <= 20
or age >= 60
🔹 논리연산자
🔹 BETWEEN 연산
: between A AND B : A와 B를 포함한 사이의 값 출력
# 회원(users) 테이블에서 나이가 20 이상 30 이하인 사람만 불러오기
SELECT *
FROM `thelook_ecommerce.users`
WHERE age BETWEEN 20 and 30
🔹 IN 연산
: IN A : A안에 값과 🌟일치🌟하는 값을 조회
# 상품(products) 테이블에서 brand 필드 중 'Onia', 'Hurley'와 일치하는 데이터만 불러오기
select *
from `thelook_ecommerce.products`
where brand in ('Onia', 'Hurley');
🔹 LIKE 연산
: 특정 문자를 포함하는 데이터만 가져오기
: LIKE '비교문자'
1. 비교 문자와 형태가 일치(%(모든 문자), _(한 글자) 사용)
2. 대소문자를 안가림
3. %
는 와일드카드
# product의 name안에 Young이 포함된 레코드를 조회
select *
from `thelook_ecommerce.products`
where name like '%Young%';
🔹 IS NULL
: NULL 값 출력 (🚨 0은 값이 있음)
# 배송은 되었지만 배송 완료가 되지 않은 주문건만 출력
select *
from `thelook_ecommerce.order_items`
where delivered_at IS NULL
and shipped_at IS NOT NULL
🔹 집계함수
select count(retail_price)
from `thelook_ecommerce.products`
select sum(retail_price)
from `thelook_ecommerce.products`
select avg(cost)
from `thelook_ecommerce.products`
select max(cost), max(retail_price)
from `thelook_ecommerce.products`
select min(cost), min(retail_price)
from `thelook_ecommerce.products`
select variance(retail_price)
from `thelook_ecommerce.products`
select stddev(retail_price)
from `thelook_ecommerce.products`
🔹 GROUP BY
: 특정 항목을 기준으로 그룹화하여 데이터를 조회할 때 사용
: 그룹화 하려는 항목이 select에 들어가야 함
select country,
count(id) as id_count
from `thelook_ecommerce.users`
group by country
📌 GROUP BY
: 특정 항목을 기준으로 그룹화하여 데이터를 조회할 때 사용
: 그룹화 하려는 항목이 select에 들어가야 함
📌 IN은 정확히 그 문자와 일치하는 데이터를 찾는 경우, LIKE는 그 문자를 포함하는 데이터를 찾는 경우 사용한다. 차이점 구분하기!
📌 0은 null값이 아니다. 0도 0이라는 값이 있다.
예전부터 SQL 제대로 배워보고 싶다고 생각했는데 좋은 강사님과 멘토님 덕분에 재미있게 공부할 수 있었다. 그리고 프로그래머스 문제를 난생 처음 풀었는데 스스로 해결했다! 아주 뿌듯해서 나혼자 미소를 지었다..ㅎㅎ
그런데 점심 때 밀가루를 많이 먹어서 2시쯤 너무 졸렸다. 다음부턴 식단도 관리해야겠다.
일단 코드부터 냅다 짜는 습관. 알고리즘을 먼저 생각하자!
무사히 토익 시험을 마치고, 저녁에 박조은 강사님 과제하기.