카테고리 없음

[패스트캠퍼스] 커널 아카데미 데이터 분석 부트캠프 18기 8주차 학습일지

DataStep404 2025. 4. 20. 21:21

이번 주는 SQL 문법 구조를 정리하고, 실습으로는 orders.csv 파일을 MySQL 데이터베이스에 직접 업로드하는 과정을 수행했다. 특히 csv 데이터를 DB로 옮기는 작업은 예전부터 궁금했던 부분이었는데, 실제 코드로 구현하면서 이해할 수 있었다.

 

1. SQL 종류

  • DML (데이터 조작): SELECT, INSERT, UPDATE, DELETE
  • DDL (데이터 정의): CREATE, DROP, ALTER
  • DCL (권한 제어): GRANT, REVOKE

2. SELECT 문 흐름

  • 작성 순서:
  • SELECT → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
  • 실행 순서:
  • FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

3. DDL 기본 구조

  • CREATE TABLE 문법
    • 컬럼명, 데이터 타입(INT, VARCHAR, FLOAT 등), 제약조건(NOT NULL, PRIMARY KEY, FOREIGN KEY 등)

4. 함수 및 조건 처리

  • 단일행 함수: ROUND, CONCAT, DATE_FORMAT
  • 집계 함수: SUM, AVG, COUNT
  • 조건 함수: IF, IFNULL, CASE WHEN THEN ELSE END
  • GROUP BY / HAVING: 집계 후 조건 필터
  • JOIN: INNER, LEFT, RIGHT, OUTER, CROSS, SELF
  • SUBQUERY: SELECT, FROM, WHERE 내부에 또 다른 SELECT
  • VIEW, WITH: 쿼리 단순화
  • TRIGGER: 특정 이벤트 발생 시 자동 실행 쿼리

5. CSV 데이터를 MySQL에 저장하기

orders.csv 데이터를 orders라는 테이블로 MySQL DB에 저장

# 1. 라이브러리 불러오기
import pandas as pd
from sqlalchemy import create_engine

# 2. CSV 데이터 불러오기
df = pd.read_csv('data/p2/orders.csv')  # 데이터 프레임 생성

# 3. MySQL 연결 정보 설정
user = 'root'
password = 'database'
host = 'localhost'
port = 3306
database = 'project'

# 4. SQLAlchemy 엔진 생성
engine = create_engine(f'mysql+pymysql://{user}:{password}@{host}:{port}/{database}')

# 5. 데이터프레임을 MySQL에 저장
# name: 테이블 이름
# con: 연결 엔진
# if_exists: 테이블이 이미 있으면 'replace'로 대체
# index=False: 인덱스 컬럼은 저장하지 않음
df.to_sql(
    name='orders',
    con=engine,
    if_exists='replace',
    index=False
)

 

 

이번 주에 처음으로 csv 파일을 직접 MySQL에 테이블 형태로 저장해봤다.

지금까지는 ‘데이터는 데이터고, DB는 DB다’라고 막연하게 생각했었는데, Pandas랑 SQLAlchemy로 실제 연결해서 넣어보니까, 흐름 자체가 조금 감이 잡혔다.

 

SELECT 문도 단순히 암기하는 게 아니라, FROM이 먼저 실행되고 WHERE로 조건 걸고, 마지막에 SELECT된다는 순서를 실제로 보면서 익히니까 이제 머릿속에도 좀 남는 느낌이다.

 

그리고 이번 주 금요일부터 프로젝트가 진행되기 때문에, 쿼리를 그냥 쓰는 수준이 아니라 직접 설계하고, 분석 쿼리를 짤 수 있을 정도로 익혀야 한다.

JOIN, GROUP BY, SUBQUERY 같은 문법도 다시 정리하고 계속 손으로 쳐봐야 할 것 같다.

 

이제는 이론보다 직접 다뤄보는 게 중요한 단계로 넘어온 것 같다. 앞으로는 SQL을 진짜 ‘도구’처럼 써보는 연습을 해야 할 때다.