API 참조
이 문서는 SQL Prettify 도구의 기능과 구현에 대한 기술 세부 정보를 제공합니다.
도구 구성
포맷 옵션
이 도구는 다음 구성 옵션을 지원합니다.
interface FormattingOptions {
indentSize: number; // 2, 4, or 8 spaces
keywordCase: "upper" | "lower" | "preserve";
uppercaseKeywords: boolean;
uppercaseFunctions: boolean;
uppercaseDataTypes: boolean;
alignCommas: boolean;
breakBeforeBooleanOperator: boolean;
}
기본 구성
const defaultOptions: FormattingOptions = {
indentSize: 2,
keywordCase: "upper",
uppercaseKeywords: true,
uppercaseFunctions: true,
uppercaseDataTypes: true,
alignCommas: false,
breakBeforeBooleanOperator: true,
};
지원되는 SQL 키워드
데이터 조작 언어(DML)
- SELECT: 테이블에서 데이터를 조회합니다
- INSERT: 새 레코드를 삽입합니다
- UPDATE: 기존 레코드를 수정합니다
- DELETE: 레코드를 삭제합니다
데이터 정의 언어(DDL)
- CREATE: 데이터베이스 객체를 생성합니다
- ALTER: 데이터베이스 객체를 수정합니다
- DROP: 데이터베이스 객체를 제거합니다
- TRUNCATE: 테이블의 모든 레코드를 제거합니다
데이터 제어 언어(DCL)
- GRANT: 권한을 부여합니다
- REVOKE: 권한을 회수합니다
트랜잭션 제어
- COMMIT: 트랜잭션 변경 사항을 저장합니다
- ROLLBACK: 트랜잭션 변경 사항을 되돌립니다
- SAVEPOINT: 저장 지점을 만듭니다
지원되는 SQL 함수
집계 함수
- COUNT: 행 수 또는 NULL이 아닌 값 수를 계산합니다
- SUM: 값의 합계를 계산합니다
- AVG: 평균값을 계산합니다
- MIN: 최소값을 찾습니다
- MAX: 최대값을 찾습니다
문자열 함수
- UPPER: 대문자로 변환합니다
- LOWER: 소문자로 변환합니다
- LENGTH: 문자열 길이를 구합니다
- SUBSTRING: 부분 문자열을 추출합니다
- CONCAT: 문자열을 연결합니다
- TRIM: 앞뒤 공백을 제거합니다
날짜/시간 함수
- NOW: 현재 타임스탬프를 가져옵니다
- DATE: 날짜 부분을 추출합니다
- TIME: 시간 부분을 추출합니다
- YEAR: 연도를 추출합니다
- MONTH: 월을 추출합니다
- DAY: 일을 추출합니다
수학 함수
- ROUND: 지정한 소수 자릿수로 반올림합니다
- FLOOR: 내림합니다
- CEIL: 올림합니다
- ABS: 절대값을 구합니다
- SQRT: 제곱근을 계산합니다
- POWER: 거듭제곱을 계산합니다
지원되는 데이터 타입
숫자 타입
- INT: 정수 값
- INTEGER: 정수 값
- BIGINT: 큰 정수 값
- SMALLINT: 작은 정수 값
- TINYINT: 매우 작은 정수 값
- DECIMAL: 고정 소수점 값
- NUMERIC: 고정 소수점 값
- FLOAT: 부동소수점 값
- DOUBLE: 배정밀도 부동소수점 값
- REAL: 단정밀도 부동소수점 값
문자열 타입
- CHAR: 고정 길이 문자열
- VARCHAR: 가변 길이 문자열
- TEXT: 대용량 텍스트 데이터
- BLOB: 바이너리 대용량 객체
날짜/시간 타입
- DATE: 날짜 값
- TIME: 시간 값
- DATETIME: 날짜 및 시간 값
- TIMESTAMP: 타임스탬프 값
기타 타입
- BOOLEAN: 불리언 값
- BIT: 비트 값
- JSON: JSON 데이터
포맷 규칙
들여쓰기 규칙
- SELECT 절: 각 컬럼을 새 줄에 배치하고 들여씁니다
- FROM 절: 테이블 이름에 적절한 들여쓰기를 적용합니다
- JOIN 절: JOIN 조건에 적절한 들여쓰기를 적용합니다
- WHERE 절: 조건에 적절한 들여쓰기를 적용합니다
- GROUP BY: 그룹화 컬럼에 들여쓰기를 적용합니다
- ORDER BY: 정렬 컬럼에 들여쓰기를 적용합니다
대소문자 변환 규칙
- 키워드: 지정한 대소문자(upper/lower/preserve)로 변환합니다
- 함수: 함수명을 지정한 대소문자로 변환합니다
- 데이터 타입: 데이터 타입명을 지정한 대소문자로 변환합니다
- 식별자: 테이블명과 컬럼명의 원래 대소문자를 유지합니다
줄바꿈 규칙
- 주요 절: SELECT, FROM, WHERE, GROUP BY, ORDER BY 앞에서 줄바꿈합니다
- JOIN 절: 각 JOIN 유형 앞에서 줄바꿈합니다
- 불리언 연산자: 활성화 시 AND/OR 앞에서 줄바꿈합니다
- 쉼표 정렬: 활성화 시 SELECT 목록의 쉼표를 정렬합니다
히스토리 관리
히스토리 레코드 구조
interface HistoryRecord {
id: string;
input: string;
output: string;
options: FormattingOptions;
timestamp: number;
}
히스토리 작업
- 레코드 추가: 새 포맷 기록을 자동으로 추가합니다
- 레코드 삭제: 특정 히스토리 항목을 제거합니다
- 히스토리 비우기: 모든 히스토리를 삭제합니다
- 레코드 불러오기: 히스토리에서 SQL과 옵션을 복원합니다
저장 제한
- 최대 레코드 수: 50개
- 저장 위치: 브라우저 로컬 스토리지
- 지속성: 데이터는 브라우저 세션 간 유지됩니다
오류 처리
일반적인 오류
- 잘못된 SQL 문법: 형식이 잘못된 SQL 쿼리
- 지원되지 않는 구문: 포매터가 지원하지 않는 SQL 기능
- 대형 쿼리: 처리 제한을 초과하는 쿼리
- 브라우저 제한: 로컬 스토리지 또는 메모리 제약
오류 복구
- 문법 검사: 기본 SQL 문법을 검사합니다
- 점진적 저하: 복잡한 쿼리에 대해 부분 포맷을 제공합니다
- 사용자 피드백: 명확한 오류 메시지와 제안을 제공합니다
- 대체 옵션: 대안 포맷 방식을 제공합니다
성능 고려 사항
처리 제한
- 쿼리 크기: 최대 10,000자 쿼리를 처리합니다
- 복잡도: 최대 10단계 중첩 쿼리를 지원합니다
- 처리 시간: 일반적으로 100ms 이내에 처리합니다
최적화 기능
- 증분 처리: 변경된 부분만 처리합니다
- 캐싱: 반복 작업의 포맷 결과를 캐시합니다
- 지연 로딩: 필요할 때 히스토리 레코드를 불러옵니다
브라우저 호환성
지원 브라우저
- Chrome: 80+ 버전
- Firefox: 75+ 버전
- Safari: 13+ 버전
- Edge: 80+ 버전
필수 기능
- ES6 지원: 화살표 함수, 템플릿 리터럴
- Local Storage: 브라우저 로컬 스토리지 API
- Clipboard API: 최신 클립보드 접근
- CSS Grid: 레이아웃 지원
통합
임베딩 옵션
이 도구는 다른 애플리케이션에 통합할 수 있습니다.
- Iframe 임베딩: iframe으로 삽입합니다
- API 통합: 포맷 함수를 직접 사용합니다
- 컴포넌트 통합: Vue 컴포넌트로 포함합니다
사용자 지정
- 테마 지원: 라이트 및 다크 테마
- 언어 지원: 다국어 옵션
- 사용자 지정 스타일: CSS 사용자 지정 지원