SQL 格式化工具
為 SQL 語句新增縮排和換行,提升可讀性。
格式化前
格式化後
SQL 格式化工具是什麼
冗長的 SQL 若擠在一行內,便讀不出其結構。本工具會以 SELECT、FROM、WHERE、JOIN 等關鍵字為基準插入換行,並將嵌套的子查詢逐層縮排,整理成能以肉眼追蹤語句結構的形式。格式化不會改變語意。
方言的選擇會影響結果。MySQL、PostgreSQL、Oracle、SQL Server 各有其獨有語法,請配合您使用的資料庫選擇。另外,含有語法錯誤的 SQL 無法正確解析,可能不會被格式化。此時請先確認 SQL 本身是否有效。
SQL 的格式化步驟
- 貼上 SQL 將想格式化的 SQL 貼入輸入欄。以分號分隔即可一次處理多個語句。
- 選擇方言 請配合使用中的資料庫選擇。若不清楚,維持標準 SQL 也能格式化大部分語法。
- 設定縮排與大寫轉換 縮排寬度請配合團隊規範調整。啟用大寫轉換後關鍵字會對齊,更易閱讀。
- 格式化並確認結果 按下「格式化」即會顯示結果。可直接貼入程式碼審查或規格書。
用好本工具的小技巧
- SELECT、FROM、WHERE、JOIN 等 SQL 關鍵字將自動換行並對齊,巢狀子查詢也會正確縮排。
- 啟用"關鍵字大寫"後,關鍵字將自動轉為大寫,提升可讀性。
- 可調整縮排大小,以符合團隊的程式碼規範。
- 將格式化後的 SQL 貼上到程式碼審查或文件中,閱讀更加清晰。
- 支援 MySQL、PostgreSQL、Oracle 等主流 SQL 方言。
SQL 格式化工具的實用場景
解讀收到的 SQL
將從日誌或應用程式原始碼中取出的單行 SQL 格式化後,結合條件與篩選條件的結構便一目了然。
在提交程式碼審查前整理
先對齊縮排再提交,審查者便能專注於邏輯而非格式。差異也更易閱讀。
放入規格書或文件
將格式化後的 SQL 貼入資料,讀者便能追蹤其結構。搭配大寫轉換,印刷品上也清楚易讀。
分析緩慢查詢的結構
由於可用肉眼確認子查詢的深度與結合的數量,在閱讀執行計畫之前便能先有個大概判斷。
與 SQL 相關的術語
- SQL 方言
- 指各資料庫產品之間語法的差異。由於各產品在標準 SQL 上加入了自有擴充,格式化時便需要指定。
- 子查詢
- 指嵌套寫在另一個 SQL 語句之中的查詢。越深越難閱讀,因此是縮排效果最大的部分。
- JOIN
- 指結合多個資料表來取得資料的語法。結合條件容易變長,換行位置會左右可讀性。
- 預備語句
- 指以事後填入值的形式組建查詢的方式。是防範 SQL 注入的基本。
- SQL 注入
- 指在輸入值中混入 SQL 片段,使其執行非預期查詢的攻擊。以字串串接組建 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 即可無需密碼登入——這一古典漏洞至今仍是安全培訓的標準教材。