카테고리 없음
[패스트캠퍼스] 커널 아카데미 데이터 분석 부트캠프 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을 진짜 ‘도구’처럼 써보는 연습을 해야 할 때다.