Navicat Blog

SQL 編輯器生產力:重構與即時錯誤偵測 2026 年 9 月 21 日,由 Robert Gravelle 撰寫

撰寫簡單的查詢固然容易,但當查詢擴展到多達十多個聯結與大量別名時,維護工作就會變得極為繁瑣。過去只要重新命名一個資料表別名,就必須手動找出並更新每一個相關引用;而 Navicat 18 的 SQL 編輯器正是為了解決這些痛點而設計,全新推出三項核心功能:重構、即時錯誤偵測以及程式碼見解。

重構:重新命名符號

此版本的核心亮點之一是 重新命名符號,該功能建立在全新重寫的 SQL 解析器之上。與 Navicat 18 部分採用 AI 的工具不同,這項功能完全具備確定性——不涉及任何 AI 運算,執行結果絕對精準且零不確定性。此解析器能夠充分理解查詢的結構,從而找到指定識別碼的所有出現位置,並能安全地一次完成全域同步更新。

假設你正在 MySQL Sakila 範例資料庫中執行以下查詢:

SELECT c.customer_id,
       c.first_name,
       c.last_name,
       SUM(p.amount) AS total_spend
FROM customer c
LEFT JOIN payment p ON p.customer_id = c.customer_id
GROUP BY c.customer_id
ORDER BY total_spend DESC
LIMIT 1;

如果覺得別名 c 不夠直觀,只需將滑鼠懸停在該別名上,按一下右鍵(Mac 上可按住 Control 鍵並點按),然後選擇重構 > 重新命名符號...

refactor_command (75K)

重新命名符號後面的省略號表示它會啟動一個對話方塊。在重新命名符號對話方塊中,我們可以輸入新的稱。

rename_symbol_dialog (13K)

按下「確定」按鈕後,整個陳述式中所有出現的 c(包括 SELECT 欄位清單、FROM 子句、JOIN 條件以及 GROUP BY)都會一併更新,絕不會留下「只改一半」而導致語法錯誤的查詢。此指令不僅適用於重新命名別名,同樣也適用於物件識別碼。

即時錯誤偵測

全新的 SQL 編輯器不再需要等待執行失敗才通知你出錯,而是在你撰寫程式碼的同時進行即時語法檢查。無論是拼字錯誤、引用不存在的欄位或資料表,或是多資料表查詢中的歧義欄位名稱,都會於程式碼行內即時標示,絕不會等你按下「執行」後才跳出晦澀難懂的錯誤訊息。對於涉及多個聯結資料表的查詢,光是這項功能就能為你省去無數次來回除錯的時間。

以下是與前述相同的查詢,但其中包含了一個拼寫錯誤的欄位名稱。如果我們將滑鼠懸停在任何帶有橘色底線的文字上,就會即時跳出警示訊息:

bad_column (36K)

同時,"SUM" 函式也被標上了紅底線。將滑鼠懸停在上面會顯示錯誤訊息:

syntax_error (26K)

這兩組快顯提訊息都提供了使用 AI 修復的選項。顧名思義,使用 AI 修復工具能運用 AI 來修正查詢中的所有警告和錯誤。建議的修改隨後會顯示在對話方塊中:

fix_with_ai_dialog (93K)

我們可以透過以下三種方式將程式碼套用至編輯器:

  • 附加到編輯器:將程式碼新增至現有內容的末尾。
  • 取代編輯器中全部內容:清空現有內容並將其完全取代為新程式碼。
  • 取代編輯器中已選取的內容(預設):清空所選內容並用新程式碼取代。

程式碼見解

「程式碼見解」透過另外三項非常實用的特性,完善了這一功能組合:將滑鼠懸停在識別碼上,無需離開編輯器即可顯示其中繼資料(資料類型、可否為空值等);按一下識別碼會突出顯示指令碼中該識別碼被使用的所有其他位置,非常適合在長查詢中追蹤欄位;按住 Ctrl 並點選資料表或欄位即可直接跳轉到該物件的設計器或資料編輯器。

info_popup (60K)

為何這很重要

這三項功能相輔相成,徹底重塑了日常撰寫 SQL 的開發節奏。它讓你不再需要花費時間手動同步重新命名、事後偵錯拼字錯誤,或是頻繁切換視窗來確認欄位類型。對於需要長時間在 SQL 編輯器中工作的開發者來說,這些省下的時間累積起來將會非常驚人!

Share
Blog Archives