🚀 SQL, 한 걸음 더 깊이
어제 데이터베이스의 문을 열었다면
오늘은 그 안에서 자유롭게 뛰어다니는 법을 익혔다
단순히 SELECT *
로 모든 것을 가져오는 것을 넘어
내가 원하는 데이터만 정확히 골라내고
심지어 새로운 의미를 가진 데이터로 가공하는 과정까지
SQL의 진짜 매력을 느낄 수 있었다
🏛️ 데이터를 다루는 세 가지 언어: DDL, DML, DQL
SQL의 명령어들이 각자 어떤 역할을 하는지 명확히 구분해,
복잡해 보였던 코드들의 흐름을 보기 위해 노력했다
종류 | 역할 | 내가 느낀 점 |
---|---|---|
DDL (정의어) | 🏗️ 데이터의 집, 즉 테이블의 구조를 설계하는 일 | CREATE TABLE 로 뼈대를 세울 때, 제약조건 하나하나가 데이터의 품질을 지키는 안전장치라고 생각했다 |
DML (조작어) | ✍️ 테이블이라는 집에 데이터를 채워 넣고, 수정하고, 비우는 일 | INSERT , UPDATE , DELETE 는 신중해야 하는 작업, 데이터의 생명주기를 관리하는 중요한 역할이었다 |
DQL (질의어) | 🕵️♀️ 데이터의 바다에서 원하는 정보를 찾아내는 탐정의 역할 | SELECT 는 단순 조회를 넘어, 분석의 시작점이라는 것을 깨달았다 |
🔍 SELECT 로 필요한 데이터 가져오기
SQL 쿼리가 어떤 순서로 작동하는지 이해하고 나니
FROM
과 WHERE
의 중요성에 대해 알 수 있었다
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
실행 순서를 생각하며 그리며 쿼리를 작성하니
오류도 줄고, 더 효율적인 코드를 고민하게 되었다
특히 GROUP BY
와 HAVING
을 함께 사용해
전체 데이터를 그룹으로 묶고, 그 그룹에 조건을 걸어 필터링하는 것이 굉장히 강력하다고 느꼈다
-- 장르별 평균 관객 수가 200만 명 이상인 장르만 알고 싶을 때
SELECT genre, AVG(audience)
FROM movies
GROUP BY genre
HAVING AVG(audience) >= 2000000;
🛠️ SQL 주요 함수
SQL 함수들은 기본 무기인 SELECT
를 더욱 강력하게 만들어주는 특수 아이템 같았다
📝 문자열 함수
문자열을 합치고(CONCAT
), 자르고(SUBSTR
), 바꾸는(REPLACE
) 등
데이터를 내가 원하는 형태로 깔끔하게 다듬는 과정이 재미있었다
마치 흩어진 텍스트를 보기 좋게 편집하는 것 같았다
📅 날짜 함수
YEAR()
, MONTH()
같은 함수로 시간의 특정 부분만 쏙쏙 뽑아내거나
DATE_FORMAT()
으로 보기 좋은 형태로 바꾸는 작업을 하며,
시계열 데이터를 분석할 때 굉장히 자주 사용할 함수란 것이 바로 느껴졌다
🔄 흐름 제어 함수
IF
나 CASE
를 사용했을 때는 SQL이 단순한 데이터 언어가 아니라
프로그래밍 언어처럼 느껴졌다
-- 나이에 따라 다른 메시지를 보여주고 싶을 때
SELECT name, age,
CASE
WHEN age > 20 THEN '성인입니다'
ELSE '청소년입니다'
END AS age_group
FROM students;
✨ SQL과 더 친해지기
오늘은 SQL의 다양한 함수와 기능을 배우며
단순히 주어진 데이터를 분석하는 것을 넘어
내가 필요한 형태로 데이터를 가공하고, 새로운 인사이트를 뽑아내는
능동적인 분석가가 되어야겠다고 다짐했다