視覺化 SQL 產生器

偶爾降臨的原生 SQL 惡夢

「單純用 SELECT 和 WHERE 篩選資料我還行……但只要 INNER JOIN 和 LEFT JOIN 一跑出來,我的大腦就直接當局了。」

這是我在輔導初階開發者時最常聽到的真心話。而且我完全懂!有了現代強大的 ORM(例如 Prisma 或是 ActiveRecord)幫我們扛下大部分的粗活,我們在每天的前後端上下班日常裡,幾乎已經不太需要親手去寫「原生 SQL(Raw SQL)」了。

但該來的還是會來。偏偏今天你需要拉出一份非常刁鑽的分析報表:「幫我抓出這個月所有用戶的營收,排除掉已經停權的帳號,然後把它跟 Log 表格 JOIN 在一起。」你試著憑記憶拼湊出這段語法,按下執行,然後被一句冷酷無情的 Syntax error near 'LEFT JOIN'狠狠打臉。接下來你得浪費 20 分鐘才發現自己沒關好單引號,或者不小心塞了一個多餘的逗號。真的心好累。

像疊樂高一樣組裝資料結構

「如果有個工具能讓我完全忘記語法規則,只專注在『如何將資料串接起來』的邏輯本質上呢?」

這個念頭催生了這個視覺化 SQL 產生器。我希望能提供一個遊樂場,你只要用滑鼠按幾下下拉選單挑選資料表和欄位,背後就會自動幫你排好一段語法完美、毫無 Bug 的查詢程式碼。

這個工具裡讓我最自豪的設計,絕對是它的即時預覽功能。
當你把下拉選單從 INNER JOIN 切換成 LEFT JOIN 的那一瞬間,右邊的 SQL 區塊會在不到十分之一秒內同步更新。看著程式碼即時給出反應,會產生一種非常強烈的回饋感。因為你能立刻看到你點擊之後的「後果」,這使得這個小工具不知不覺中,變成了一個超級有效的 SQL 學習用沙盒。

老實講,現在最依賴這個工具的人可能是我自己。如果它可以拯救任何一個開發者,讓他免於因為少打一個逗號而崩潰抓頭髮的命運,那當初花在開發這東西的每一秒鐘就都完全值得了。

比起「不會寫」,我更想減少「看不懂」

開發過程中我體會到,初學者卡關的地方,與其說是「不會寫 SQL」,不如說是「看不懂自己寫出來的 SQL」。憑感覺寫、剛好能跑,卻說不出為什麼能跑——這才是最危險的狀態。

所以這個產生器不只是吐出 SQL,而是讓「你從哪張表起手、用哪個鍵 JOIN、怎麼篩選」以操作流程的形式留下來。把產出的 SQL 丟進格式化工具裡看一眼,事後就能讀回來:「啊,原來我組了這樣一段查詢。」先學會讀,再學會寫——希望它能成為那道入口。

常見問題

SQL 初學者也能使用嗎?

正是為初學者設計的。用下拉選單挑選資料表與 JOIN 鍵,對應的 SQL 就會即時顯示在右側。一邊看著輸出一邊動手操作,比讀語法書更快理解。

我老是搞混 INNER JOIN 和 LEFT JOIN。

只想要兩張表都有的列就用 INNER JOIN,必須保留左表的列就用 LEFT JOIN。但要注意:在 WHERE 裡篩選 LEFT JOIN 右表的欄位,最後會得到和 INNER JOIN 一樣的結果,這是常見的陷阱。

產生的 SQL 可以直接用在正式環境嗎?

它會產生標準的 SELECT 語句。執行前先用格式化工具檢視,並確認資料表名稱與條件較為安全。若需要資料庫方言專屬的函式或語法,請在產生後手動補上。

我輸入的資料表名稱或條件會被傳送到外部嗎?

不會。查詢組裝完全在你的瀏覽器內完成。即使輸入正式環境的資料表或欄位名稱,也不會傳送到外部伺服器。