🗃️ SQL 포맷터
SQL 쿼리를 포맷하거나 압축하여 가독성을 높입니다
SQL 포맷팅이란?
왜 필요한가요?
SQL(Structured Query Language)은 데이터베이스를 조작하는 언어입니다. 복잡한 SQL 쿼리는 한 줄로 작성되거나 들여쓰기가 엉망인 경우가 많아 가독성이 떨어집니다. SQL 포맷터는 쿼리를 읽기 쉽게 정렬하고 들여쓰기를 일관되게 적용합니다.
정리된 SQL은 디버깅이 쉽고, 쿼리 최적화 지점을 찾기 용이하며, 팀원 간 코드 리뷰 시 의사소통을 원활하게 합니다.
언제 사용하나요?
- 쿼리 디버깅: 에러 발생 시 쿼리 구조를 명확히 파악
- 로그 분석: 애플리케이션 로그에서 추출한 SQL 정리
- 코드 리뷰: 일관된 포맷으로 쿼리 검토
- 문서화: 프로젝트 문서에 포함할 SQL 예제 정리
- 성능 최적화: 쿼리 실행 계획 분석 전 포맷팅
- 학습: 복잡한 예제 쿼리를 이해하기 쉽게 변환
실무 사용 예시
압축된 SQL → 포맷팅
원본:
SELECT u.id,u.name,COUNT(o.id) as order_count FROM users u LEFT JOIN orders o ON u.id=o.user_id WHERE u.active=1 GROUP BY u.id HAVING COUNT(o.id)>5 ORDER BY order_count DESC포맷팅 후:
SELECT
u.id,
u.name,
COUNT(o.id) AS order_count
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.active = 1
GROUP BY
u.id
HAVING
COUNT(o.id) > 5
ORDER BY
order_count DESC복잡한 서브쿼리
SELECT
p.product_name,
p.price,
(
SELECT
AVG(price)
FROM
products
WHERE
category_id = p.category_id
) AS category_avg
FROM
products p
WHERE
p.price > (
SELECT
AVG(price)
FROM
products
)서브쿼리 구조가 명확하게 보임
SQL 스타일 가이드
일반적인 SQL 포맷팅 규칙:
- ✅ 키워드 대문자: SELECT, FROM, WHERE 등 SQL 키워드는 대문자
- ✅ 한 줄에 하나: SELECT 절의 각 컬럼을 별도 줄에 작성
- ✅ 들여쓰기: 중첩된 구문은 2칸 또는 4칸 들여쓰기
- ✅ JOIN 명시: INNER JOIN, LEFT JOIN 등 명시적으로 작성
- ✅ AS 사용: 별칭은 AS 키워드로 명확히 표시
- ✅ 서브쿼리 정렬: 서브쿼리도 동일한 규칙 적용
주의사항
- 문법 오류: 포맷터는 문법 검증을 하지 않습니다. 실행 전 반드시 테스트하세요.
- 데이터베이스 방언: MySQL, PostgreSQL, Oracle 등 DB마다 문법이 약간 다를 수 있습니다.
- 주석 보존: 포맷팅 시 주석이 유지되는지 확인하세요.
- 문자열 리터럴: 쿼리 내 문자열은 그대로 유지되어야 합니다.
- 성능: 포맷팅은 실행 성능에 영향을 주지 않지만, 가독성 향상으로 최적화를 돕습니다.
SQL vs NoSQL
| 특징 | SQL (관계형) | NoSQL (비관계형) |
|---|---|---|
| 데이터 구조 | 테이블, 행, 열 | 문서, 키-값, 그래프 |
| 스키마 | 고정 스키마 | 유연한 스키마 |
| 확장성 | 수직 확장 | 수평 확장 |
| 용도 | 복잡한 쿼리, 트랜잭션 | 빠른 읽기/쓰기, 대용량 |