SQL 포매터
SQL 쿼리를 즉시 포맷하고 정리합니다.
특정 SQL 방언(MySQL, PostgreSQL 등)을 선택하여 올바른 구문 강조 및 들여쓰기를 보장하세요.
복잡한 쿼리 정리, 생성된 SQL 디버깅 또는 검토를 위한 코드 준비에 완벽합니다.
SQL 포매터
긴 SQL, minify된 SQL, ORM이 생성한 SQL은 읽기 어렵습니다. 이 SQL 포매터는 줄바꿈과 들여쓰기를 적용해 JOIN, WHERE, GROUP BY, 서브쿼리, 정렬 조건을 더 쉽게 검토할 수 있도록 도와줍니다.
언제 사용하면 좋은가
- 코드 리뷰 전: 복잡한 query를 팀원이 읽기 쉬운 형태로 정리합니다.
- ORM 출력 디버깅: 로그에 찍힌 SQL을 정리해 조건과 join을 확인합니다.
- 성능 튜닝 중: 필터, group, order 조건을 더 명확하게 살펴봅니다.
실무 메모
포맷팅은 가독성을 높여주지만 query의 정확성이나 성능을 보장하지 않습니다. 실제 데이터베이스에서 실행 결과와 실행 계획을 함께 확인하세요.
이 도구의 관련 기사
SQL 포맷터로 쿼리를 읽기 쉽게 만드는 방법: 방언(dialect) 선택이 왜 중요한가
로그나 ORM에서 뽑아낸 지저분한 SQL을 읽기 쉬운 쿼리로 정리하는 방법을 해설합니다. 방언(PostgreSQL/MySQL/BigQuery) 선택이 정리 결과를 바꾸는 기술적 이유와, 정리가 구문 검사 역할도 하는 이유를 다룹니다.
SQL 빌더로 SELECT·JOIN 쿼리를 시각적으로 작성하는 방법
브라우저에서 시각적 SQL 빌더로 SELECT, WHERE, JOIN을 조립하는 방법을 해설합니다. 값의 자동 따옴표 판정 원리, JOIN 사용 구분표, 여러 테이블 JOIN 작성법까지 다룹니다.
SQL 절 실행 순서 레퍼런스|WHERE에서 SELECT 별칭을 못 쓰는 이유
SQL은 작성한 순서대로 실행되지 않습니다. 논리적 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT)를 축으로, 별칭이 WHERE에서 안 되는 이유, WHERE와 HAVING의 구분, ONLY_FULL_GROUP_BY, COUNT(*)와 COUNT(컬럼)의 차이, LEFT JOIN + WHERE 함정을 예제로 정리합니다.
SQL JOIN 완전 레퍼런스|INNER·LEFT·RIGHT·FULL의 차이와 결과 행 수 이해하기
SQL JOIN 종류(INNER/LEFT/RIGHT/FULL/CROSS/SELF)를 치트시트와 결과 행 수 예제로 정리합니다. 1대다 JOIN에서 행이 늘어나는 이유, WHERE절과 ON절의 NULL 처리 차이, 여러 테이블 JOIN 작성법까지 다룹니다.
최신 아티클
curl 옵션 정리|-X -H -d 가 실제로 하는 일과 함정
실무에서 만나는 curl 옵션을 표로 정리했습니다. -d 만으로 이미 POST가 되는 이유, -d 와 --data-raw 의 차이, 앞의 @ 가 조용히 파일을 읽는 함정, 작은따옴표와 큰따옴표의 구분, -k 와 -L 을 쉽게 붙이면 안 되는 이유까지 예제로 설명합니다.
JSON Schema와 Zod를 상호 변환하는 원리|required와 .optional()의 대응
JSON Schema에서 Zod 스키마를 만들고 Zod 코드에서 다시 JSON Schema를 뽑아내는 양방향 변환기의 구현을 해설합니다. required와 .optional()의 기본값이 반대인 문제, 제약 조건 대응표, 코드를 실행하지 않고 해석하는 방법까지 정리합니다.
SQL 절 실행 순서 레퍼런스|WHERE에서 SELECT 별칭을 못 쓰는 이유
SQL은 작성한 순서대로 실행되지 않습니다. 논리적 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT)를 축으로, 별칭이 WHERE에서 안 되는 이유, WHERE와 HAVING의 구분, ONLY_FULL_GROUP_BY, COUNT(*)와 COUNT(컬럼)의 차이, LEFT JOIN + WHERE 함정을 예제로 정리합니다.
unified diff 형식 읽는 법|git diff의 @@ 헤더 완전 해설
git이 출력하는 unified diff 형식을 읽는 법을 정리했습니다. @@ -12,7 +12,9 @@ 의 네 숫자가 뜻하는 것, 한 글자만 고쳐도 줄 전체가 바뀐 것처럼 보이는 이유, 공백과 줄바꿈 문자의 함정, \ No newline at end of file, 머지 커밋의 @@@, similarity index를 통한 이름 변경 감지까지 예제로 설명합니다.
UTC⇄JST/KST 변환 레퍼런스|9시간 시차 대조표와 타임존 사고 예방법
UTC와 일본 시간(JST)·한국 시간(KST)의 변환을 대조표로 정리했습니다. ISO 8601의 Z와 +09:00의 의미, JavaScript 날짜 파싱이 9시간 어긋나는 조건, MySQL/PostgreSQL의 타임존 동작, GitHub Actions cron이 UTC로 도는 함정까지 예제와 함께 해설합니다.
CREATE TABLE 레퍼런스|MySQL·PostgreSQL·SQLite의 타입과 제약 조건 차이
CREATE TABLE(DDL) 작성법을 3개 데이터베이스 비교표로 정리했습니다. 타입 대응표, 자동 증가(AUTO_INCREMENT / IDENTITY / rowid)의 방언 차이, 외래 키의 ON DELETE 동작, MySQL이 조용히 무시하는 CHECK 제약까지 예제와 함께 해설합니다.