[230113] 멋쟁이사자처럼 AI SCHOOL 8기 [특강] SQL_이범재강사님' 복습

조세연·2023년 1월 13일
0

멋사 AI SCHOOL 8기

목록 보기
16/35
post-thumbnail

📝Today I learned

🚀 TIL 목차 🚀

  • 데이터베이스
  • Google BigQuery
  • SQL 기초 문법
    • FROM, SELECT
    • AS, LIMIT, DISTINCT
    • WHERE, 논리연산자, BETWEEN, IN, LIKE, IS NULL
    • 집계함수
    • GROUP BY

[특강] SQL 기초

1) 데이터베이스

🔹 데이터베이스 (Database)
: 데이터의 집합

🔹 DBMS (Database Management System)
: 데이터베이스를 효율적으로 관리하는 소프트웨어

🔹 관계형 모델 (Relational Model)
: 데이터를 표 형태로 구조적으로 관리하는 모델

🔹 RDBMS (Relational Database Management System)
: 관계형 모델 기반의 데이터베이스를 관리하는 시스템
: 대표적으로 Oracle, DB2, MySQL, SQLite 등이 있다.

🔹 관계형 데이터베이스의 구성 요소

  • TABLE(행, 열), VIEW(데이터를 선택하여 만든 가상 테이블), INDEX(테이블의 행의 주소) 등으로 구성
  • ENTITY(엔터티, 객체), RELATION(테이블 간 관계)들의 집합

🔹 키(Key)

  • 기본키 : 메인으로 사용하는 키. 고유한 주민번호, 전화번호 등
  • 후보키 : 기본키를 제외한 고유한 키
  • 외래키 : 관계되어 있는 테이블을 참고하고 있는 키 (eg. 2개의 테이블의 공통적인 키. 서로의 테이블을 연결할 때 사용)

2) Google BigQuery

🔹 Google BigQuery
: 페타바이트급 규모의 데이터를 실시간으로 관리하고 분석할 수 있게 해주는 관리형 서버리스 컴퓨팅 데이터 웨어하우스

  • 데이터 웨어하우스 : 여러 소스에서 가져온 데이터를 분석하고 보고하는 데 사용되는 시스템

: 데이터 추가, 수정은 못함. 조회만 가능.

: 실제 조회한 양만큼 과금하는 유료 프로그램. 월 1TB까지는 무료. 학습 수준에서는 무료로 사용 가능

3) SQL 기초 문법

🔹 SQL (Structured Query Language)
: 스토리지 언어의 표준
: DB에 접근할 때 사용하는 프로그래밍 언어

🔹 SQL 명령어 분류

  • DML : 데이터 조작어
    • SELECT, INSERT, UPDATE, DELETE
  • DDL : 데이터 정의어
    • CREATE(DATABASE, TABLE, INDEX), ALTER(DATABASE, TABLE), DROP(TABLE, INDEX), RENAME, TRUNCATE
  • DCL : 데이터 제어어
    • GRANT, REVOKE
  • TCL : 트렌젝션 제어어
    • COMMIT, ROLLBACK, SAVEPOINT

🔹 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

🔹 논리연산자

  • and
    : 모든 조건을 만족한 레코드 조회
    : 곱하기, 교집합 (둘 다 T여야 T)
  • or
    : 둘 중 하나라도 만족한 레코드 조회
    : 더하기, 합집합 (둘 다 F여야 F)
  • not
    : 조건 값이 아닌 레코드 조회

🔹 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

🔹 집계함수

  • COUNT
    : 해당 항목 레코드의 개수를 반환
select count(retail_price)
from `thelook_ecommerce.products`
  • SUM
    : 해당 항목 레코드의 합계를 반환
select sum(retail_price)
from `thelook_ecommerce.products`
  • AVG
    : 해당 항목 레코드의 평균을 반환
select avg(cost)
from `thelook_ecommerce.products`
  • MAX
    : 해당 항목 레코드의 최대값를 반환
select max(cost), max(retail_price)
from `thelook_ecommerce.products`
  • MIN
    : 해당 항목 레코드의 최소값를 반환
select min(cost), min(retail_price)
from `thelook_ecommerce.products`
  • VARIANCE
    : 해당 항목 레코드의 분산을 반환
select variance(retail_price)
from `thelook_ecommerce.products`
  • STDDEV
    : 해당 항목 레코드의 표준편차를 반환
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

❗이것만은 외우고 자자 Top 3

📌 GROUP BY
: 특정 항목을 기준으로 그룹화하여 데이터를 조회할 때 사용
: 그룹화 하려는 항목이 select에 들어가야 함

📌 IN은 정확히 그 문자와 일치하는 데이터를 찾는 경우, LIKE는 그 문자를 포함하는 데이터를 찾는 경우 사용한다. 차이점 구분하기!

📌 0은 null값이 아니다. 0도 0이라는 값이 있다.

🌟데일리 피드백

1. 오늘의 칭찬&반성

예전부터 SQL 제대로 배워보고 싶다고 생각했는데 좋은 강사님과 멘토님 덕분에 재미있게 공부할 수 있었다. 그리고 프로그래머스 문제를 난생 처음 풀었는데 스스로 해결했다! 아주 뿌듯해서 나혼자 미소를 지었다..ㅎㅎ
그런데 점심 때 밀가루를 많이 먹어서 2시쯤 너무 졸렸다. 다음부턴 식단도 관리해야겠다.

2. 내가 부족한 부분

일단 코드부터 냅다 짜는 습관. 알고리즘을 먼저 생각하자!

3. 내일의 목표

무사히 토익 시험을 마치고, 저녁에 박조은 강사님 과제하기.

profile
HR Analyst가 되고 싶은

0개의 댓글