SQL 格式化工具

為 SQL 語句新增縮排和換行,提升可讀性。

格式化前

格式化後

SQL 格式化工具是什麼

冗長的 SQL 若擠在一行內,便讀不出其結構。本工具會以 SELECT、FROM、WHERE、JOIN 等關鍵字為基準插入換行,並將嵌套的子查詢逐層縮排,整理成能以肉眼追蹤語句結構的形式。格式化不會改變語意。

方言的選擇會影響結果。MySQL、PostgreSQL、Oracle、SQL Server 各有其獨有語法,請配合您使用的資料庫選擇。另外,含有語法錯誤的 SQL 無法正確解析,可能不會被格式化。此時請先確認 SQL 本身是否有效。

SQL 的格式化步驟

  1. 貼上 SQL 將想格式化的 SQL 貼入輸入欄。以分號分隔即可一次處理多個語句。
  2. 選擇方言 請配合使用中的資料庫選擇。若不清楚,維持標準 SQL 也能格式化大部分語法。
  3. 設定縮排與大寫轉換 縮排寬度請配合團隊規範調整。啟用大寫轉換後關鍵字會對齊,更易閱讀。
  4. 格式化並確認結果 按下「格式化」即會顯示結果。可直接貼入程式碼審查或規格書。

用好本工具的小技巧

  • SELECT、FROM、WHERE、JOIN 等 SQL 關鍵字將自動換行並對齊,巢狀子查詢也會正確縮排。
  • 啟用"關鍵字大寫"後,關鍵字將自動轉為大寫,提升可讀性
  • 可調整縮排大小,以符合團隊的程式碼規範。
  • 將格式化後的 SQL 貼上到程式碼審查或文件中,閱讀更加清晰。
  • 支援 MySQL、PostgreSQL、Oracle 等主流 SQL 方言。

SQL 格式化工具的實用場景

解讀收到的 SQL

將從日誌或應用程式原始碼中取出的單行 SQL 格式化後,結合條件與篩選條件的結構便一目了然。

在提交程式碼審查前整理

先對齊縮排再提交,審查者便能專注於邏輯而非格式。差異也更易閱讀。

放入規格書或文件

將格式化後的 SQL 貼入資料,讀者便能追蹤其結構。搭配大寫轉換,印刷品上也清楚易讀。

分析緩慢查詢的結構

由於可用肉眼確認子查詢的深度與結合的數量,在閱讀執行計畫之前便能先有個大概判斷。

與 SQL 相關的術語

SQL 方言
指各資料庫產品之間語法的差異。由於各產品在標準 SQL 上加入了自有擴充,格式化時便需要指定。
子查詢
指嵌套寫在另一個 SQL 語句之中的查詢。越深越難閱讀,因此是縮排效果最大的部分。
JOIN
指結合多個資料表來取得資料的語法。結合條件容易變長,換行位置會左右可讀性。
預備語句
指以事後填入值的形式組建查詢的方式。是防範 SQL 注入的基本。
SQL 注入
指在輸入值中混入 SQL 片段,使其執行非預期查詢的攻擊。以字串串接組建 SQL 時容易發生。
預存程序
指保存在資料庫端的一連串處理。由於含有控制語法,可能超出格式化的支援範圍。

常見問題

除標準 SQL 外,還支援 MySQL、PostgreSQL、Oracle(PL/SQL)、SQL Server(T-SQL)。從下拉選單中選擇與所用資料庫匹配的方言,即可正確格式化該方言特有的語法。

如果輸入的 SQL 包含語法錯誤,格式化工具可能無法正確解析。請先在資料庫客戶端中確認 SQL 語法是否有效,再進行格式化。

可以將多條 SQL 語句用分號分隔後貼上,工具會一併格式化。但儲存過程和 PL/SQL 塊語法可能無法完全支援。
工具君

閒話 ― SQL 的 50 年:關係型資料庫的歷史

SQL 起源於 E.F. Codd(IBM)1970 年論文提出的關係模型,IBM 以此為基礎開發了"SEQUEL"(因商標問題改名為 SQL)。1986 年被 ANSI 標準化,至今仍被眾多資料庫廣泛使用,是一門歷久彌新的語言。

最著名的安全事件之一是 SQL 注入攻擊。2011 年索尼 PSN(PlayStation Network)事件導致逾 1 億條個人資訊洩露,估計損失達 1.71 億美元。時至今日,SQL 注入仍是 OWASP Top 10(Web 應用主要漏洞排行)的常客,使用預處理語句是基本防禦手段。

"WHERE 1=1"是構建動態 SQL 的實用技巧,但也是 SQL 注入的經典案例。在登入表單中輸入 ' OR '1'='1 即可無需密碼登入——這一古典漏洞至今仍是安全培訓的標準教材。