SQL 格式化工具
Enter SQL on the left to start formatting
GeekFormat SQL 格式化工具可快速整理凌亂的 SQL 查詢語句並美化排版。支援 MySQL、PostgreSQL、SQLite、SQL Server、Oracle 等 20 種資料庫方言,可自訂關鍵字大小寫、縮排風格、運算子換行位置、運算式寬度等格式化選項。提供 4 種一鍵預設風格並內建 SQL 壓縮與語法驗證功能,支援檔案上傳/下載、URL 分享、鍵盤快捷鍵。基於 CodeMirror 6 編輯器提供語法高亮與可調整面板版面,輸入後即時自動格式化。所有處理都在你的瀏覽器本機完成——SQL 語句不會上傳到任何伺服器。
相關推薦
關於 SQL 格式化
SQL 格式化(SQL Formatting / SQL Beautification)是指透過自動化工具調整 SQL 語句的空白字元(換行、縮排、空格)與關鍵字大小寫,使其呈現一致、高可讀性的版面結構。做為一種宣告式查詢語言,一個複雜的 SQL 查詢往往包含多資料表 JOIN、巢狀子查詢、多個 WHERE 條件、GROUP BY 分組、HAVING 過濾、ORDER BY 排序等多個子句。未格式化時所有內容擠在一行或縮排雜亂,可讀性與維護效率會受到嚴重影響。格式化後的 SQL 透過適當換行讓每個子句獨占一行,透過縮排體現巢狀層級,讓閱讀者快速理解查詢結構。
為什麼 SQL 格式化很重要?在團隊協作環境中,不同開發者有不同的程式風格偏好——有人偏好關鍵字大寫,有人偏好小寫;有人用 2 空白縮排,有人用 4 空白或 Tab;有人把 AND 放在行首,有人放在行尾。這些風格差異本身不影響 SQL 執行,但在程式碼審查(Code Review)時會產生大量無意義的 diff,讓審查者必須區分真正的邏輯變更與單純的格式化調整。統一的 SQL 格式化規範加上自動格式化工具可以消除風格爭論,讓團隊專注在商業邏輯上。
SQL 格式化的主要規範通常包含以下面向:第一,關鍵字大小寫——SELECT、FROM、WHERE、JOIN、ON、GROUP BY、ORDER BY、HAVING、LIMIT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP 等 SQL 保留字通常大寫以區分識別字(或按團隊規範統一小寫);第二,子句換行——每個主要子句(SELECT/FROM/WHERE/GROUP BY/ORDER BY 等)獨占一行;第三,欄位名對齊——SELECT 清單中多個欄位名各占一行並垂直對齊;第四,縮排層級——子查詢、JOIN 條件、巢狀 CASE 運算式等增加縮排體現層次;第五,運算子位置——AND/OR 等邏輯運算子統一放在行首或行尾。
不同資料庫方言的 SQL 格式化有其各自特點。MySQL 使用反引號(`)引用識別字,PostgreSQL 使用雙引號("),SQL Server 使用方括號([]);MySQL 使用 LIMIT 分頁,PostgreSQL 支援 LIMIT/OFFSET,SQL Server 使用 TOP 或 OFFSET/FETCH,Oracle 使用 ROWNUM;PostgreSQL 有 :: 型別轉換運算子,MySQL 有反引號跳脫,SQL Server 有方括號識別字。這些方言差異要求格式化器能識別特定資料庫的語法元素,否則特殊語法可能被誤判為錯誤或關鍵字被錯誤拆分。本工具基於 sql-formatter 函式庫實現,為 20 種主流 SQL 方言提供專屬語法支援。
SQL 壓縮(SQL Minification)是格式化的反向操作,在部分場景非常實用。應用程式記錄中印出的 SQL、ORM 框架(如 Hibernate、MyBatis、Django ORM、SQLAlchemy)產生的 SQL、資料庫效能監控工具擷取的 SQL——這些經常是無換行的單行壓縮格式,非常不利於除錯——需要先格式化再閱讀。反之,當需要在程式字串中嵌入 SQL(如 Java/Python/JavaScript 中字串拼接)、寫入設定檔、透過 URL 參數傳送、或在不支援多行文字的聊天工具中分享時,壓縮成單行可避免換行與縮排造成的格式問題。
選擇合適的格式化風格需要考慮團隊規範與使用場景。關鍵字大寫風格是 SQL 的經典傳統——在印刷時代,大寫關鍵字讓手寫或打字機輸出的 SQL 更易閱讀,至今仍有許多團隊與組織採用。關鍵字小寫風格在 GitHub 等現代程式平台越來越受歡迎,因為小寫視覺上更柔和,且在有語法高亮的現代編輯器中已無需依賴大小寫區分關鍵字。2 空白縮排寬度在前端開發者中較常見,4 空白在後端 Java/C# 開發者中較普遍。Tab 縮排可讓不同開發者在編輯器中自訂顯示寬度。閱讀長條件清單時將邏輯運算子 AND/OR 放在行首便於掃描每個條件;放在行尾則符合英文閱讀習慣。
SQL 格式化工具的實作原理主要基於詞法分析(Tokenization)與語法解析。sql-formatter 這類函式庫首先將 SQL 字串拆解為一系列 Token(關鍵字、識別字、字面值、運算子、標點符號、註解等),再依據語法規則重新排列這些 Token(不同方言的規則集不同),在適當位置插入換行與縮排。與一般程式格式化器(如 Prettier)不同的是,SQL 格式化器需要理解 SQL 特有的文法結構(如 JOIN...ON 條件、CASE WHEN...END 運算式、子查詢括號巢狀)才能正確縮排,而非僅依賴大括號或括號配對。
使用 SQL 格式化工具時請注意以下事項:第一,格式化不會驗證 SQL 的語義正確性——語法正確但邏輯錯誤的 SQL(如 JOIN 條件錯誤、缺少 WHERE 條件)格式化後依然是錯的;格式化只改善版面,不改變邏輯。第二,格式化工具在少數邊緣案例中可能在空白敏感場景(如字串常數內的空格、特殊註解位置)產生與原始 SQL 不同的結果;格式化後建議簡單驗證。第三,特別是含動態參數的 SQL,請勿未經測試直接在正式環境執行。第四,對於含敏感資料(密碼、金鑰、PII)的 SQL,請使用本機格式化工具(如本工具)而非線上工具,避免資料外洩風險。
適用場景
- 維護專案時整理未格式化的大型 SQL 預存程序與複雜 JOIN 查詢,快速理解商業邏輯
- 團隊程式碼審查前統一 SQL 風格,消除因個人格式化偏好造成的 diff 噪音,專注於邏輯審查
- 從記錄或主控台複製的壓縮單行 SQL 進行格式化,方便閱讀與除錯
- 撰寫技術文件與部落格時格式化 SQL 範例,嵌入文件時提升專業度與可讀性
- 從資料庫用戶端匯出的排版凌亂 SQL,在 commit 前重新格式化為團隊規範風格
- 準備面試或技術簡報時格式化 SQL 展示語句,用於投影片與白板講解
- 排查 SQL 錯誤時格式化凌亂的巢狀子查詢,定位括號不匹配或關鍵字遺漏等結構問題
- ORM 框架產生的 SQL 記錄經常是無換行的壓縮格式,格式化後方便分析實際執行的查詢
- 開發資料移轉指令碼時格式化 CREATE TABLE 與 INSERT 語句,提升可維護性
- 比對不同版本 SQL 前先統一格式化,避免單純格式化差異干擾程式碼審查
- 學習 SQL 時格式化範例查詢,透過清晰縮排與換行理解 JOIN、子查詢、GROUP BY 的層次關係
- 與同事分享 SQL 片段前先格式化再透過 URL 連結分享,對方打開即可看到相同的格式化結果
使用方法
- 選擇資料庫方言(預設 MySQL,支援 20 種 SQL 方言),確保格式化器正確識別語法
- 將要格式化的 SQL 語句貼到左側編輯區域,或點擊上傳按鈕匯入 .sql/.txt 檔案,也可從範例選單載入範例 SQL
- 點擊格式化按鈕(Shift+Cmd/Ctrl+F)或等待自動格式化(輸入後 800ms 自動觸發),格式化結果立即顯示在右側
- 需要調整格式化效果時,點擊設定按鈕展開設定面板,調整關鍵字大小寫、縮排、換行等選項,或選擇預設風格;如需單行壓縮,點擊壓縮按鈕
- 點擊複製按鈕複製結果,或點擊下載按鈕儲存為 .sql 檔案,也可點擊分享按鈕生成包含 SQL 內容的 URL 連結
功能特點
- 20 種資料庫方言支援:支援 Standard SQL、MySQL、MariaDB、TiDB、PostgreSQL、SQLite、BigQuery、Snowflake、Redshift、DB2、PL/SQL(Oracle)、T-SQL(SQL Server)、Spark SQL、Hive、Trino、ClickHouse、DuckDB 等 20 種 SQL 方言的語法識別與格式化
- 關鍵字大小寫控制:針對 SELECT/FROM/WHERE/JOIN 等關鍵字提供三種模式:大寫(UPPER)、小寫(lower)、保留原始(preserve),資料類型與函式名稱可獨立設定
- 識別字大小寫控制:資料表名、欄位名、別名等識別字支援大寫、小寫或保留原始,適應不同團隊的程式撰寫規範
- 多種縮排風格可選:提供標準縮排、表格左對齊(tabularLeft)、表格右對齊(tabularRight)三種縮排風格,滿足不同閱讀習慣
- 彈性縮排設定:縮排寬度可選 2 個空白、4 個空白或 Tab 字元;查詢語句之間的空行列數可設定 0/1/2 行
- 邏輯運算子換行:可設定 AND/OR 等邏輯運算子在運算子前(before)或運算子後(after)換行或不換行,符合團隊程式風格
- 運算式寬度控制:可調整運算式換行的行寬限制(20-200 個字元),超過此寬度自動換行以控制單行程式碼長度
- 緊湊運算子模式:開啟後運算子周圍不會保留額外空白,輸出更緊湊的格式化結果,適用於內嵌 SQL 場景
- 分號前換行:可選擇是否在語句結尾分號前插入換行,讓分號獨占一行以便快速識別語句邊界
- 4 種預設風格:一鍵切換預設(大寫關鍵字+2 空白縮排)、小寫(全小寫關鍵字)、緊湊(表格對齊+緊湊運算子)、寬鬆(4 空白縮排+雙空行)四種預設,無需手動逐一調整
- SQL 壓縮功能:一鍵將 SQL 壓縮為單行,自動移除註解、多餘空白與換行——適合記錄輸出、程式碼拼接、文件嵌入等場景
- 語法驗證功能:基礎 SQL 語法驗證,格式化失敗時顯示錯誤訊息協助定位語法問題
- 內建範例 SQL:提供基礎查詢、複雜 JOIN 查詢、多語句批次、CREATE TABLE 語句四組範例 SQL,快速體驗格式化效果
- 檔案上傳/下載:支援上傳 .sql/.txt 檔案直接匯入 SQL;支援將格式化結果下載為 .sql 檔案儲存
- URL 分享功能:使用 LZ-String 壓縮將 SQL 編碼到 URL hash 中,複製連結即可分享格式化設定與 SQL 內容
- 即時自動格式化:輸入 SQL 後 800ms 防抖動自動格式化,無需反覆點擊按鈕即可即時看到結果
- 鍵盤快捷鍵:格式化 Shift+Cmd/Ctrl+F、壓縮 Shift+Cmd/Ctrl+C、驗證 Shift+Cmd/Ctrl+V、上傳 Shift+Cmd/Ctrl+O、下載 Shift+Cmd/Ctrl+D、清除 Shift+Cmd/Ctrl+K
- CodeMirror 編輯器:基於 CodeMirror 6 的 SQL 語法高亮編輯器,支援左右面板寬度拖曳調整、字體大小調整與歷史記錄面板
- 一鍵複製結果:格式化或壓縮後的 SQL 可一鍵複製到剪貼簿,直接貼到資料庫用戶端或程式中使用
- 純瀏覽器本機處理:所有 SQL 格式化都基於 sql-formatter 函式庫在瀏覽器 JavaScript 中完成,SQL 語句不會上傳到任何伺服器,確保資料安全
常見問題
SQL 格式化會改變查詢邏輯嗎?格式化後的 SQL 可以直接執行嗎?
不會改變查詢邏輯。SQL 格式化只調整空白字元(換行、縮排、空格)與關鍵字大小寫,不會修改 SQL 中的識別字、數值、運算子、函式呼叫與查詢結構。格式化後的 SQL 與原始 SQL 語義等價,可以直接複製到 MySQL Workbench、pgAdmin、DBeaver、Navicat 等資料庫用戶端執行。但建議在測試環境驗證後再用於正式環境。
支援哪些資料庫方言?不同資料庫之間 SQL 語法有什麼差異?
支援 20 種 SQL 方言:Standard SQL、MySQL、MariaDB、TiDB、PostgreSQL、SQLite、BigQuery、Snowflake、Redshift、DB2、DB2i、PL/SQL(Oracle)、T-SQL(SQL Server)、Spark SQL、Hive、Trino、ClickHouse、SingleStoreDB、DuckDB、N1QL(Couchbase)。不同資料庫在分頁語法(LIMIT vs LIMIT/OFFSET vs TOP vs ROWNUM)、字串拼接、日期函式、識別字引號(反引號 vs 雙引號 vs 方括號)等方面存在差異。選擇正確的方言可確保格式化器正確識別關鍵字與函式名稱,避免誤格式化方言特有函式。
什麼是 SQL 壓縮?和格式化有什麼區別?
SQL 壓縮(Minify)是格式化的反向操作:移除所有註解(包含 /* */ 多行註解與 -- 單行註解)、將連續空白字元合併為單一空格、移除括號/逗號/分號/運算子周圍多餘空白,輸出緊湊的單行 SQL。壓縮適合用於在程式字串中嵌入 SQL、寫入記錄檔、透過 URL 參數傳送、在聊天視窗分享以避免換行混淆等場景。格式化則是加入適當換行與縮排提升可讀性。
自動格式化什麼時候觸發?可以關閉嗎?
在左側編輯區域輸入或修改 SQL 後,經過 800ms 的防抖動延遲後自動觸發格式化(前提是上一次格式化沒有語法錯誤)。這是為了在你停止輸入後立即展示格式化結果。如果偏好手動控制,直接點擊工具列的格式化按鈕即可,無需等待自動觸發。目前沒有單獨關閉自動格式化的開關,但只要輸入內容沒有修改就不會重複觸發。
格式化失敗並提示語法錯誤怎麼辦?
格式化器基於 sql-formatter 函式庫解析 SQL,遇到無法解析的 SQL 語法時會回報錯誤。常見原因與解決方式:1)括號不匹配——檢查左右括號數量是否對應,可利用編輯器的括號配對高亮功能協助檢查;2)字串引號未封閉——檢查單引號、雙引號是否成對出現,字串內的引號需要跳脫(如 '' 或 \');3)資料庫方言選擇錯誤——例如使用 PostgreSQL 特有的 :: 型別轉換語法但選擇了 MySQL 方言,切換為正確方言;4)SQL 片段不完整——例如只有 WHERE 子句缺少 SELECT FROM;5)使用了非常特殊的資料庫特有語法(如部分預存程序控制流程),嘗試切換到最接近的方言,或在格式化前簡化 SQL 片段。錯誤訊息會顯示解析器回報的問題位置與原因,可據此定位問題。也可先點擊驗證按鈕(Shift+Cmd/Ctrl+V)檢查語法。
大寫、小寫、保留原始關鍵字大小寫模式如何選擇?
大寫關鍵字(UPPER)是最傳統也最受歡迎的 SQL 程式風格——SELECT/FROM/WHERE/JOIN 等大寫關鍵字與資料表/欄位名形成視覺對比,在大型程式碼庫中可快速定位 SQL 結構。小寫關鍵字更適合現代 IDE 環境(現代編輯器有語法高亮,不再依賴大小寫區分),視覺外觀更統一。保留原始(preserve)保持輸入大小寫不變,適用於對現有程式碼做最小格式化調整。關鍵字、識別字(表/欄名)、資料類型(VARCHAR/INT/BIGINT)、函式名(COUNT/SUM/COALESCE)的大小寫策略可獨立設定。
表格對齊模式和標準縮排有什麼區別?
標準縮排(standard)使用傳統的階層式縮排,每個子句固定縮排固定空白數。表格左/右對齊模式會將 SELECT 清單中的欄位名、WHERE 條件中的運算式等按欄位對齊,形成類似表格的視覺效果。例如 SELECT 後的多個欄位名垂直對齊,AS 別名也對齊在同一欄位位置。這種模式在寬螢幕閱讀多欄查詢時非常舒適,但在窄螢幕上可能產生過長行。
如何在團隊規範 SQL 風格與個人偏好之間快速切換?
使用設定面板中的預設按鈕:預設(UPPER 關鍵字+2 空白標準縮排)、小寫(全小寫關鍵字)、緊湊(tabularLeft 對齊+緊湊運算子)、寬鬆(4 空白縮排+查詢間雙空行)。如果你的團隊有特定規範,手動調整各選項後格式化即可。目前不支援自訂預設儲存,但由於設定選項數量有限,快速調整也很方便。
格式化後的 SQL 會遺失註解嗎?
格式化(Format)操作會保留註解——-- 單行註解與 /* */ 多行註解都會保留在原始位置附近(具體位置取決於 sql-formatter 函式庫的註解處理邏輯)。但壓縮(Compress)操作會移除所有註解以產生最緊湊的單行 SQL;如需保留註解,壓縮前請先複製格式化結果。
支援哪些鍵盤快捷鍵?Mac 和 Windows/Linux 有什麼差異?
支援以下快捷鍵(Mac 使用 Cmd 鍵,Windows/Linux 使用 Ctrl 鍵,均需搭配 Shift 同時按下):Shift+Cmd/Ctrl+F 格式化;Shift+Cmd/Ctrl+C 壓縮;Shift+Cmd/Ctrl+V 語法驗證;Shift+Cmd/Ctrl+O 檔案上傳;Shift+Cmd/Ctrl+D 檔案下載;Shift+Cmd/Ctrl+K 清除內容。可隨時點擊工具列問號圖示檢視快捷鍵列表。
SQL 檔案上傳有大小限制嗎?支援哪些檔案格式?
支援上傳 .sql 與 .txt 格式的文字檔。理論上沒有硬性檔案大小限制,但非常大的檔案(例如超過 1MB 的 SQL 傾印檔)在瀏覽器處理時可能會有效能問題。建議處理單一查詢或小規模指令碼檔案。對於超大 SQL 檔(例如完整資料庫傾印),建議先分割成小區塊再格式化。檔案內容透過瀏覽器 FileReader API 讀取,不會上傳到任何伺服器。
URL 分享功能安全嗎?伺服器能看到 SQL 內容嗎?
URL 分享功能使用 LZ-String 壓縮 SQL 內容並編碼到 URL 的 hash 部分(# 後的內容)。URL hash 部分的特性是不會隨 HTTP 請求發送到伺服器,僅在瀏覽器本機處理。當你複製分享連結給他人時,對方瀏覽器解析 hash 後解壓縮顯示 SQL 內容——整個過程 SQL 不會經過任何伺服器。但請注意,分享連結中包含完整 SQL 內容;如果 SQL 中含有敏感資訊(如密碼、金鑰、個資),請勿在公開管道分享連結。
多條 SQL 語句的指令碼可以格式化嗎?
可以。工具支援多條 SQL 語句批次格式化(例如多個以分號分隔的 SELECT/INSERT/UPDATE/CREATE TABLE 語句)。可透過設定面板中的「查詢之間空行」選項控制語句之間的間距(0/1/2 行)。載入「多語句」範例 SQL 可體驗多語句格式化效果。每條語句獨立縮排與格式化,語句之間以設定的空行數分隔。
多大的 SQL 語句會造成卡頓?
基於 sql-formatter 函式庫的純 JavaScript 實現,幾百行以內的 SQL 在現代瀏覽器上通常毫秒級回應,無明顯卡頓。即使是數千行的預存程序或複雜查詢也能在 1 秒內完成。所有計算都在瀏覽器主執行緒完成;超大檔案(如超過一萬行的 SQL 傾印)可能造成短暫介面凍結——建議分批處理。
工具需要網路連線嗎?SQL 資料安全嗎?
頁面載入後可離線使用;SQL 格式化、壓縮、驗證全部在瀏覽器本機 JavaScript 中完成,不會將你輸入的 SQL 語句發送到任何外部伺服器。不使用 Cookie 追蹤,也不收集使用者輸入的 SQL 內容或使用行為資料。基於成熟的開源 sql-formatter 函式庫實現,程式邏輯透明可審計。
故障排查
出現「Parse error」或「SQL 格式化失敗」等格式化錯誤怎麼辦?
格式化器基於 sql-formatter 函式庫解析 SQL,遇到無法解析的 SQL 語法時會回報錯誤。常見原因與解決方式:1)括號不匹配——檢查左右括號數量是否對應,可利用編輯器的括號配對高亮功能協助檢查;2)字串引號未封閉——檢查單引號、雙引號是否成對出現,字串內的引號需要跳脫(如 '' 或 \');3)資料庫方言選擇錯誤——例如使用 PostgreSQL 的 :: 運算子但選擇了 MySQL 方言,切換為正確方言;4)SQL 語句不完整——例如只有 WHERE 子句缺少 SELECT FROM;5)使用了非常特殊的資料庫特有語法(如部分預存程序控制流程),嘗試切換到最接近的方言,或在格式化前簡化 SQL 片段。
格式化後中文或特殊字元變成亂碼?
本工具完整支援 UTF-8 編碼,中文與 Unicode 字元在格式化過程中保持不變。如果出現亂碼,通常是因為你貼上的 SQL 本身來自編碼錯誤的檔案(如從 GBK 編碼檔案複製)。請確保來源檔案以 UTF-8 編碼儲存,或在貼上前先將檔案轉換為 UTF-8 編碼。瀏覽器端 CodeMirror 編輯器預設使用 UTF-8,不會引入編碼轉換。
上傳 SQL 檔案後沒有反應或顯示空白?
檔案上傳僅支援 .sql 與 .txt 副檔名的文字檔。如果檔案是二進位格式(如 .sqlite 資料庫檔、.doc 文件),上傳後會顯示亂碼或空白。此外,部分瀏覽器對 JavaScript 讀取本機檔案有安全限制——請確保是主動點擊上傳按鈕選擇檔案而非拖曳(目前不支援拖曳上傳)。建議檔案大小不超過 1MB;過大可能導致瀏覽器解析緩慢。
格式化後部分關鍵字變成小寫/大寫,與原始輸入不一致?
這是正常的格式化行為。關鍵字大小寫(keywordCase)選項預設為 UPPER,會統一將 SQL 關鍵字轉為大寫。如果你希望保持原始大小寫不變,請在設定面板中將關鍵字、識別字、資料類型、函式的大小寫選項設定為「保留原始(preserve)」——這樣格式化器只調整換行與縮排,不改變任何字母大小寫。
術語表
- SQL 方言(SQL Dialect)
- 不同資料庫管理系統(DBMS)對標準 SQL 的擴充與變體。例如 MySQL 的 LIMIT、PostgreSQL 的 :: 型別轉換、SQL Server 的 TOP、Oracle 的 ROWNUM 都是方言特有語法。格式化時選擇正確方言可確保語法解析正確。
- 關鍵字大小寫(Keyword Case)
- 針對 SQL 保留字(SELECT/FROM/WHERE/JOIN 等)的大小寫策略。大寫(UPPER)是傳統風格,小寫(lower)在現代開發中越來越受歡迎,保留原始(preserve)用於最小變更。
- 識別字(Identifier)
- SQL 中的資料庫物件名稱,包含資料庫名、資料表名、欄位名、別名、索引名、檢視表名、預存程序名等。不同資料庫引用識別字的方式不同:MySQL 使用反引號,PostgreSQL 使用雙引號,SQL Server 使用方括號。
- 縮排風格(Indent Style)
- 控制 SQL 格式化時的縮排對齊方式。標準縮排使用階層式遞進;tabularLeft/tabularRight 將欄位名與別名以表格形式對齊,在寬螢幕上可讀性更佳但可能產生較長行。
- 邏輯運算子換行(Logical Operator Newline)
- 多行條件中 AND/OR 等邏輯運算子的換行位置。before 表示運算子在下一行行首,after 表示運算子在目前行尾。不同團隊有不同偏好。
- 運算式寬度(Expression Width)
- 觸發換行的單行字元數限制(20-200 字元),超過此寬度的運算式會換行,類似程式編輯器中的 printWidth/尺規設定。
- 緊湊運算子(Dense Operators)
- 一種格式化選項,開啟後運算子(=、<、>、+、- 等)周圍不保留額外空白,例如 `WHERE id=1 AND status='active'` 而非 `WHERE id = 1 AND status = 'active'`,產生更緊湊的輸出。
- 查詢之間空行(Lines Between Queries)
- 多條 SQL 語句之間的空行列數。0 表示緊鄰排列,1 表示一行空行分隔(常見),2 表示兩行空行(寬鬆風格),影響多語句指令碼的可讀性。
- SQL 壓縮/Minify(SQL Minify/Compress)
- 移除格式化 SQL 中的所有註解與多餘空白,合併為單行緊湊格式。適用於記錄輸出、程式碼嵌入、URL 傳輸等——是格式化的反向操作。
- Pretty Print
- 透過自動縮排與換行將程式碼或資料以高可讀性格式輸出。SQL Pretty Print 即 SQL 格式化美化,與 Minify(壓縮)相對。
- CodeMirror
- 本工具使用的瀏覽器端程式碼編輯器元件(第 6 版),提供 SQL 語法高亮、行號顯示、程式碼摺疊等編輯增強功能——是業界廣泛使用的網頁程式碼編輯器方案。
- sql-formatter
- 本工具核心使用的開源 SQL 格式化函式庫,支援多種 SQL 方言的詞法分析與格式化輸出——是前端生態系中最受歡迎的 SQL 格式化函式庫之一。
支援的 SQL 方言列表
本工具支援 20 種 SQL 資料庫方言,選擇與你的資料庫對應的方言可獲得最佳格式化效果:
| 方言 | 資料庫 | 說明 |
|---|---|---|
| Standard SQL | 標準 SQL | ANSI SQL 標準語法,適用於通用場景與未知方言 |
| MySQL | MySQL / TiDB | 最流行的開源關聯式資料庫,反引號識別字、LIMIT 分頁 |
| MariaDB | MariaDB | MySQL 分支,與 MySQL 語法相容並擴充了更多函式 |
| PostgreSQL | PostgreSQL | 功能豐富的開源資料庫,雙引號識別字、:: 型別轉換 |
| SQLite | SQLite | 嵌入式輕量級資料庫,常用於行動應用與瀏覽器 |
| T-SQL | SQL Server / Azure | Microsoft SQL Server 的 Transact-SQL,方括號識別字、TOP 分頁 |
| PL/SQL | Oracle | Oracle 的程序式 SQL 擴充,ROWNUM 分頁、豐富內建套件 |
| BigQuery | Google BigQuery | Google 雲端資料倉儲,支援 STRUCT/ARRAY 等巢狀型別 |
| Snowflake | Snowflake | 雲端原生資料倉儲,具備強大的半結構化資料處理能力 |
| Redshift | AWS Redshift | Amazon Web Services 資料倉儲,基於 PostgreSQL 但有自有語法 |
格式化預設風格對照表
4 種一鍵預設風格,適用不同使用場景:
| 預設 | 關鍵字 | 縮排 | 運算子 | 查詢間距 |
|---|---|---|---|---|
| 預設 | UPPER | 2 空白標準 | 一般留白 | 1 空行 |
| 小寫 | lower | 2 空白標準 | 一般留白 | 1 空行 |
| 緊湊 | UPPER | 表格左對齊 | 緊湊模式 | 1 空行 |
| 寬鬆 | UPPER | 4 空白標準 | 一般留白 | 2 空行 |
鍵盤快捷鍵一覽
所有快捷鍵均需同時按下修飾鍵 + Shift + 對應字母鍵:
| 操作 | Mac | Windows/Linux | 說明 |
|---|---|---|---|
| 格式化 | ⇧⌘F | Shift+Ctrl+F | 美化 SQL 語句,加入換行與縮排 |
| 壓縮 | ⇧⌘C | Shift+Ctrl+C | 將 SQL 壓縮為單行,移除註解與空白 |
| 驗證 | ⇧⌘V | Shift+Ctrl+V | 檢查 SQL 語法正確性 |
| 上傳 | ⇧⌘O | Shift+Ctrl+O | 從本機檔案載入 .sql/.txt |
| 下載 | ⇧⌘D | Shift+Ctrl+D | 將結果儲存為 .sql 檔案 |
| 清除 | ⇧⌘K | Shift+Ctrl+K | 清空輸入與輸出內容 |
Privacy & Security
本 SQL 格式化工具的所有操作完全在你的瀏覽器本機完成:你輸入的 SQL 語句、選擇的方言、格式化設定全部透過 sql-formatter 函式庫在瀏覽器 JavaScript 中處理,不會將任何 SQL 內容或設定傳送到網路上的任何外部伺服器。檔案上傳透過 HTML5 FileReader API 讀取本機檔案內容,不經過網路傳輸。URL 分享功能將壓縮後的 SQL 編碼到 URL hash 部分(# 後的內容不會隨 HTTP 請求發送到伺服器),僅在瀏覽器本機解壓縮顯示。不使用 Cookie 追蹤,不收集使用者輸入的 SQL 內容或使用行為資料。關閉或重新整理頁面後,輸入內容與設定狀態自動重置(歷史記錄僅儲存在本機 localStorage 中)。
Authoritative References
- GitHubsql-formatter 官方文件
- codemirror.netCodeMirror 6 官方網站
- WikipediaWikipedia - SQL 語法
- 色盲模擬器
- 色彩轉換器
- .htaccess 轉 Nginx 轉換器
- SQL 轉換器
- Cookie 解析器
- Cron 表達式產生器
- Cron 表達式驗證器
- CSS 格式化
- CSS 壓縮
- CSV 轉 Excel
- 貨幣轉換器
- 差異檢查器
- 網站圖示產生器
- XML 格式化
- 十六進位轉換器
- HTML 格式化
- HTML 壓縮
- HTML 轉 Markdown
- Markdown 轉 HTML
- JavaScript 格式化工具
- JS 壓縮
- JSX 格式化工具
- JSX 壓縮
- 關鍵字聚類
- Lorem Ipsum 產生器
- Markdown 表格產生器
- Meta Tag 產生器
- 密碼產生器
- 密碼強度檢測工具
- QR Code/條碼產生器
- 正規表達式測試器
- Slug 產生器
- SQL 產生器
- SQL 格式化工具
- 字數統計
- 時間工具
- TS 格式化
- TS 壓縮
- TSX 格式化
- TSX 壓縮
- Unix 時間戳轉換
- UUID 產生器
- YAML 格式化
- 大小寫轉換器