본문 바로가기
카테고리 없음

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

by DataStep404 2025. 4. 20.

이번 주는 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을 진짜 ‘도구’처럼 써보는 연습을 해야 할 때다.