CodeGym /課程 /SQL SELF /安裝 CodeGym 插件

安裝 CodeGym 插件

SQL SELF
等級 4 , 課堂 4
開放

這個插件可以直接嵌入到 Intellij IDEA、WebStorm 或 PyCharm 開發環境裡,讓你可以直接在裡面做 CodeGym 課程的題目。比如說,你可以寫解題的 code、送出檢查、跟「預設解」比對,還有很多其他功能。你在插件裡解題的進度會跟你在 CodeGym 帳號同步,所以網站跟開發環境裡看到的進度都一樣。

你可以直接在 Jetbrains marketplace 裡下載 CodeGym 插件,就在你的開發環境裡。下面我們會用 WebStorm 當例子來示範步驟,不過其他 IDE 也是一樣的流程。

要用這個插件,你需要 Jetbrains IDE 2023.1 或更新的版本。

  1. 進到「設定」區,Windows/Linux File - Settings,MacOS WebStorm - Preferences。如果沒有設定區,就開一個專案或新建一個。

  2. 在跳出來的視窗左邊選單選 Plugins,然後點 Marketplace 分頁。在搜尋框輸入 codegym

  3. 選擇插件然後點 Install 按鈕。
  4. 重啟 (Restart IDE) WebStorm,就可以開始用插件了。

插件安裝好了!

登入帳號跟載入題目

  1. 你會看到介面有點變,還有一個按鈕。登入帳號 在上方橫向工具列。

    點下去會跳出一個登入你帳號的視窗,要輸入你的密鑰:

    提醒一下,你可以在 設定 → 安全性與登入 找到你的密鑰。

  2. 要開新題目,點左邊直向工具列的 Tasks,然後在左側面板點題目的卡片,再點 開啟

  3. 當你打開新題目時,會看到一個工作區,裡面有幾個重要檔案:
    • Solution — 這是你主要要寫 code 的檔案。你要在這裡寫 SQL 查詢來解題。
    • init.sql — 這是用來準備你本地資料庫的輔助腳本。裡面有建立需要的資料表和塞資料的指令。
    • 題目條件的分頁。
  4. Solution 檔案一樣,跟網站上一樣。你要寫解答然後按 檢查/Validate 按鈕

本地執行解答

  1. 首先你要在本地資料庫建立題目的資料表和資料。打開 init.sql 檔案,右鍵點它然後選 Run 'init.sql'
  2. 在跳出來的 "Edit Configuration" 視窗裡,你要指定腳本要在哪裡執行。在 "Target data source / schema" 區塊點 +,選你設定好的連線,然後選要用的 schema (比如 university)。選好後按 Run
  3. 執行成功後,底下 console 會出現對應訊息。要看新建的資料表,去 "Database" 面板(有兩個箭頭的按鈕)刷新一下。你應該會在 schema 裡看到新資料表(比如 products)。
  4. 現在資料庫準備好了,回到 solution.sql 檔案。寫你的 SQL 查詢。要本地測試,選擇你要的 schema(在編輯器上方下拉選單),然後按綠色的 "Run" 按鈕。你的查詢會在本地資料庫執行,結果會顯示出來。

重新執行 init.sql 或解決相依性問題

在處理任務時,您會經常執行 init.sql 指令碼來準備您的本機資料庫。但是,如果當資料表已經建立後,您第二次執行它會發生什麼事?

在這些指令碼中常見的 DROP TABLE IF EXISTS employees; 指令,似乎應該透過在建立新資料表之前刪除舊資料表來解決這個問題。然而,情況並非總是如此。您可能會遇到一個錯誤,導致無法刪除資料表。這種情況發生在有其他資料庫物件參考您的資料表時,例如來自其他資料表的外部索引鍵 (Foreign Keys) 或用於自動遞增欄位的序列 (sequences)。系統會保護這些關聯,防止刪除「父」資料表。

CASCADE 選項

對於這種情況,PostgreSQL 為 DROP 指令提供了一個擴充功能——CASCADE 選項。它告訴伺服器:「刪除此資料表,並自動刪除所有依賴於它的物件」。這允許您「強制」清除所有與要刪除的資料表相關的內容。

程式碼範例


-- 如果 employees 資料表被參考,這個版本可能會導致錯誤
DROP TABLE IF EXISTS employees;

-- 用於教學指令碼的選項
-- 這將刪除 employees 資料表及其所有相依物件(索引鍵、序列)。
-- IF EXISTS 可防止在資料表不存在時發生錯誤。
DROP TABLE IF EXISTS employees CASCADE;

-- 在此之後,您可以安全地重新建立資料表
CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    full_name TEXT NOT NULL
    -- ... 其他欄位
);

重要!在教學目的和本機開發中,當您需要頻繁地重新建立資料庫結構時,CASCADE 是您最好的幫手。然而,在實際的生產資料庫中,應極其謹慎地使用此指令,因為它可能導致無意中刪除重要的相關資料和物件。

題目同步:網站 ↔ 插件

題目清單跟狀態會自動更新,每五分鐘一次,或是你送出任何題目去檢查(CodeGym 伺服器)。

所以如果你在網站上解完題,插件裡也會顯示在已解題清單。如果你想馬上更新題目狀態,點右上角你的頭像,在下拉選單選 同步題目

插件的新手模式

這是給沒什麼 WebStorm 或其他開發環境經驗的用戶用的簡化版。有些 WebStorm 功能會被隱藏。要關掉這個模式,點右上角你的頭像,在下拉選單選「設定」:

怎麼在 PRO 模式隱藏插件的導覽面板

點設定 (⚙️) 然後把「顯示插件導覽面板」的勾勾拿掉:

2
任務
SQL SELF, 等級 4, 課堂 4
上鎖
計算簡單的總和
計算簡單的總和
2
任務
SQL SELF, 等級 4, 課堂 4
上鎖
將字串轉換為大寫
將字串轉換為大寫
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION