SQL 格式化工具

一鍵美化 SQL,並以白話逐句拆解查詢的實際運作。

SQL 輸入

縮排
關鍵字
query.sql
檢視
貼上查詢以進行格式化或解釋。

你的 SQL 格式化與分析均在瀏覽器內完成,不會上傳至 BroBroGo。

常見問題

支援哪些 SQL 方言?

標準 SQL、PostgreSQL、MySQL、MariaDB、SQL Server (T-SQL)、Oracle (PL/SQL)、SQLite、BigQuery、Snowflake 及 Spark SQL。選擇與你的數據庫對應的方言,系統就會按照該引擎預期的方式處理關鍵字和引號。

白話解釋是如何運作的?

它會讀取查詢結構——包括陳述式類型,以及 SELECT、FROM、JOIN、WHERE、GROUP BY 和 ORDER BY 等每個子句——並標註各自的作用。它描述的是查詢的結構,而非數據庫的執行計劃,因此即使是部分或特定廠商專有的 SQL 亦同樣適用。

貼上實際運行環境的查詢安全嗎?

安全。格式化與分析完全在你的瀏覽器內進行,你的 SQL 絕不會離開此頁面。

提升 SQL 程式碼可讀性的重要性

在數據庫開發與數據分析的工作流程中,編寫易於閱讀的 SQL 程式碼至關重要。雜亂無章、缺乏縮排或大小寫不一的查詢語句,不僅難以維護,還會增加團隊協作與除錯的難度。透過標準化的格式化排版,開發人員、數據分析師、數據庫管理員(DBA)及技術支援人員能夠迅速理解查詢邏輯,縮短程式碼審查(Code Review)的時間,並更高效地找出潛在的邏輯錯誤。


支援多種數據庫方言與格式化設定

本工具支援多達十種主流的數據庫方言,能夠精準處理不同數據庫引擎在關鍵字和引號上的語法差異:

  • 標準 SQL
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server (T-SQL)
  • Oracle (PL/SQL)
  • SQLite
  • BigQuery
  • Snowflake
  • Spark SQL

使用者可根據需求自訂格式化排版規則:

  • SQL 輸入限制:支援輸入長度上限為 300,000 個字元的 SQL 查詢。
  • 縮排風格:可選擇使用 2 個空格、4 個空格或 Tab 鍵進行縮排。
  • 關鍵字大小寫:支援將 SQL 關鍵字轉換為大寫、小寫或選擇保持原樣(Keep)。

瀏覽器本地端處理與私隱保護

本工具採用完全的用戶端(Client-side)運作機制。你的 SQL 格式化與分析均在瀏覽器內完成,不會上傳至 BroBroGo [privacy]。由於所有查詢內容絕不會離開此頁面,因此在處理實際運行環境的敏感查詢時,無需擔心數據外洩。此外,工具會將你的草稿和深淺色主題偏好儲存在瀏覽器的本地儲存空間中,方便下次直接使用。


運作規則與異常處理

在執行格式化與解析時,工具會依循以下規則處理特殊狀況:

  • 超長查詢:若輸入的 SQL 超過 300,000 個字元,系統會顯示錯誤訊息:「此查詢太大,無法處理。請嘗試較小的查詢。」。
  • 語法錯誤:若輸入的 SQL 含有語法錯誤,系統會顯示:「無法格式化此 SQL——請檢查語法。」,此時上一次成功格式化的輸出內容將會保留,不會被錯誤訊息覆蓋。
  • 清除功能:點擊「清除」按鈕會同時清空輸入區與輸出區、隱藏所有錯誤詳情,並顯示「已清除。」。
  • 陳述式上限:若查詢中包含多個陳述式,白話解釋功能最多僅處理前 25 條,並會附帶標註:「僅顯示前 25 條。」。

白話逐句拆解 SQL 查詢結構

本工具提供獨特的「解釋」功能,能將複雜的 SQL 查詢拆解為易懂的白話文。這項功能與數據庫的執行計劃(Execution Plan)不同,它專注於分析查詢的語法結構,因此即使是部分片段或特定廠商專有的 SQL 語法亦同樣適用。

解析結果會先顯示「已解釋 {count} 句陳述式。」,並將多重查詢標記為「第 {n} 句陳述式」。解析內容分為以下兩個維度:

1. 陳述式類型(Kind)

系統會識別並說明整句 SQL 的操作本質:

陳述式類型 運作說明
SELECT 讀取並傳回列且不作任何修改的查詢。
INSERT 向數據表新增列。
UPDATE 修改現有列中的值。
DELETE 從數據表中刪除列。
CREATE 定義新物件,例如數據表、檢視表或索引。
ALTER 修改現有物件的定義。
DROP 從數據庫中永久移除物件。
TRUNCATE 清空數據表,刪除所有列。
WITH 為後續查詢建立具名的暫時結果(CTE)。
MERGE 在單一操作中同時進行插入、更新或刪除列。
OTHER 一句 SQL 陳述式。

2. 子句角色(Role)

針對陳述式內部的各個子句,逐一說明其具體功能:

  • SELECT:傳回的欄位和運算式。
  • SELECT DISTINCT:傳回的欄位,並已移除重複列。
  • FROM:讀取數據的數據表(或子查詢)。
  • JOIN:將每一列與另一張數據表中相符的列合併。
  • WHERE:僅保留符合此條件 of 列。
  • GROUP BY:將列摺疊成群組,以便按群組計算 COUNT 或 SUM 等彙總值。
  • HAVING:在計算彙總值後篩選這些群組。
  • ORDER BY:對結果列進行排序。
  • LIMIT:限制傳回的列數。
  • OFFSET:在傳回結果前跳過指定列數。
  • UNION:將此結果與另一查詢的結果合併。
  • VALUES:要插入的列數值。
  • INTO:接收新列的數據表。
  • SET:要指定的新欄位值。
  • UPDATE:要修改列內容的數據表。
  • DELETE FROM:要從中移除列的數據表。
  • WITH:定義供下方使用的具名暫時結果集。
  • STATEMENT:原樣顯示的陳述式。

常見問題

支援哪些 SQL 方言?

標準 SQL、PostgreSQL、MySQL、MariaDB、SQL Server (T-SQL)、Oracle (PL/SQL)、SQLite、BigQuery、Snowflake 及 Spark SQL。選擇與你的數據庫對應的方言,系統就會按照該引擎預期的方式處理關鍵字和引號。

白話解釋是如何運作的?

它會讀取查詢結構——包括陳述式類型,以及 SELECT、FROM、JOIN、WHERE、GROUP BY 和 ORDER BY 等每個子句——並標註各自的作用。它描述的是查詢的結構,而非數據庫的執行計劃,因此即使是部分或特定廠商專有的 SQL 亦同樣適用。

貼上實際運行環境的查詢安全嗎?

安全。格式化與分析完全在你的瀏覽器內進行,你的 SQL 絕不會離開此頁面。