🚀 SQL, 한 걸음 더 깊이

어제 데이터베이스의 문을 열었다면
오늘은 그 안에서 자유롭게 뛰어다니는 법을 익혔다

단순히 SELECT * 로 모든 것을 가져오는 것을 넘어
내가 원하는 데이터만 정확히 골라내고
심지어 새로운 의미를 가진 데이터로 가공하는 과정까지
SQL의 진짜 매력을 느낄 수 있었다


🏛️ 데이터를 다루는 세 가지 언어: DDL, DML, DQL

SQL의 명령어들이 각자 어떤 역할을 하는지 명확히 구분해,
복잡해 보였던 코드들의 흐름을 보기 위해 노력했다

종류 역할 내가 느낀 점
DDL (정의어) 🏗️ 데이터의 집, 즉 테이블의 구조를 설계하는 일 CREATE TABLE로 뼈대를 세울 때, 제약조건 하나하나가 데이터의 품질을 지키는 안전장치라고 생각했다
DML (조작어) ✍️ 테이블이라는 집에 데이터를 채워 넣고, 수정하고, 비우는 일 INSERT, UPDATE, DELETE는 신중해야 하는 작업, 데이터의 생명주기를 관리하는 중요한 역할이었다
DQL (질의어) 🕵️‍♀️ 데이터의 바다에서 원하는 정보를 찾아내는 탐정의 역할 SELECT는 단순 조회를 넘어, 분석의 시작점이라는 것을 깨달았다

🔍 SELECT 로 필요한 데이터 가져오기

SQL 쿼리가 어떤 순서로 작동하는지 이해하고 나니
FROMWHERE의 중요성에 대해 알 수 있었다

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

실행 순서를 생각하며 그리며 쿼리를 작성하니
오류도 줄고, 더 효율적인 코드를 고민하게 되었다

특히 GROUP BYHAVING을 함께 사용해
전체 데이터를 그룹으로 묶고, 그 그룹에 조건을 걸어 필터링하는 것이 굉장히 강력하다고 느꼈다

-- 장르별 평균 관객 수가 200만 명 이상인 장르만 알고 싶을 때
SELECT genre, AVG(audience)
FROM movies
GROUP BY genre
HAVING AVG(audience) >= 2000000;

🛠️ SQL 주요 함수

SQL 함수들은 기본 무기인 SELECT를 더욱 강력하게 만들어주는 특수 아이템 같았다

📝 문자열 함수

문자열을 합치고(CONCAT), 자르고(SUBSTR), 바꾸는(REPLACE) 등
데이터를 내가 원하는 형태로 깔끔하게 다듬는 과정이 재미있었다
마치 흩어진 텍스트를 보기 좋게 편집하는 것 같았다

📅 날짜 함수

YEAR(), MONTH() 같은 함수로 시간의 특정 부분만 쏙쏙 뽑아내거나
DATE_FORMAT()으로 보기 좋은 형태로 바꾸는 작업을 하며,
시계열 데이터를 분석할 때 굉장히 자주 사용할 함수란 것이 바로 느껴졌다

🔄 흐름 제어 함수

IFCASE를 사용했을 때는 SQL이 단순한 데이터 언어가 아니라
프로그래밍 언어처럼 느껴졌다

-- 나이에 따라 다른 메시지를 보여주고 싶을 때
SELECT name, age,
    CASE
        WHEN age > 20 THEN '성인입니다'
        ELSE '청소년입니다'
    END AS age_group
FROM students;

✨ SQL과 더 친해지기

오늘은 SQL의 다양한 함수와 기능을 배우며
단순히 주어진 데이터를 분석하는 것을 넘어
내가 필요한 형태로 데이터를 가공하고, 새로운 인사이트를 뽑아내는
능동적인 분석가가 되어야겠다고 다짐했다