852 次瀏覽
問題:如何使用聯接從 ORDERS 和 TRANSACTIONS DB2 表中查詢 ORDER_ID、TRANSACTION_ID 和 TRANSACTION_STATUS?解決方案我們可以使用 INNER JOIN 查詢從 ORDERS 和 TRANSACTIONS 表中查詢 ORDER_ID、TRANSACTION_ID 和 TRANSACTION_STATUS。例如,如果我們有兩個 ORDERS 表如下。ORDER_IDTRANSACTION_IDORDER_DATEZ22345ITX448923-10-2020Z62998ITX431121-10-2020Z56902ITX312026-10-2020 TRANSACTION_IDTRANS_AMTTRANSACTION_STATUSITX44891128PAIDITX43112318PAIDITX312088956UNPAIDITX21675612FAILED我們可以使用如下 INNER JOIN 查詢。示例SELECT ORDER_ID, TRANSACTION_ID, TRANSACTION_STATUS FROM ORDERS INNER JOIN TRANSACTIONS ON ORDERS.TRANSACTION_ID = TRANSACTIONS.TRANSACTION_ID上述查詢將返回以下結果。ORDER_IDTRANSACTION_IDTRANSACTION_STATUSZ22345ITX4489PAIDZ62998ITX4311PAIDZ56902ITX3120UNPAID閱讀更多
158 次瀏覽
我們可以使用子查詢找到 ORDERS 表中所有 ORDER_TOTAL 大於所有 ORDER_TOTAL 平均值的 ORDER_ID。例如,如果我們有以下 ORDERS 表。ORDER_IDORDER_TOTALA223451867A629985634A569027615A5691187960A56915132A5691880363以下是查詢所需資料的子查詢。示例SELECT ORDER_ID, ORDER_TOTAL FROM ORDERS WHERE ORDER_TOTAL > (SELECT AVG(ORDER_TOTAL) FROM ORDERS)上述查詢的結果如下。ORDER_IDORDER_TOTALA2234587960A6299880363
803 次瀏覽
問題:當放置在表空間上的鎖的數量超過定義的限制時,COBOL-DB2 程式將如何執行?解決方案應用程式可以在 DB2 資源(如頁面、錶行等)上放置的鎖的數量在 DSNZPARM 中定義。一旦任何表中的頁面和行級鎖的數量超過允許的限制,則會發生鎖升級。在鎖升級中,DB2 釋放它持有的頁面或行級鎖,並嘗試獲取表空間級或更高級別的鎖。在這種情況下,應用程式現在對 DB2 擁有更廣泛的訪問/範圍... 閱讀更多
256 次瀏覽
DB2 最佳化器在資料庫的整體效能中起著重要作用。最佳化器透過該路徑從資料庫中獲取資料,為每個查詢選擇最佳訪問路徑。它識別要遵循的索引、查詢謂詞等。最佳化器自動選擇訪問路徑,我們可以使用 EXPLAIN DB2 命令輕鬆找到訪問路徑。我們必須首先設定查詢編號,然後提供我們的 SQL 查詢以透過三個簡單的步驟找出其訪問路徑。例如,我們有一個 DB2 ORDERS 表,我們想檢查具有... 閱讀更多
1K+ 次瀏覽
問題:如何實現一個邏輯,以便為插入的每一行自動在 DB2 列中生成一個唯一值?解決方案我們可以在 DB2 表中實現一個邏輯,透過該邏輯我們可以擁有一個列,該列將為插入的每一行自動生成一個值。此列可以用作主鍵,因此對於 DB2 表的隨機訪問非常有用。此邏輯可以透過 ROW-ID 和 SEQUENCE 實現。DB2 表的任何一列都可以定義為 ROW-ID 型別,之後 DB2 將自動分配一個新的... 閱讀更多
129 次瀏覽
問題:什麼是 DB2 子查詢,子查詢有什麼用?藉助 ORDERS 表上的示例解釋子查詢。解決方案DB2 中的子查詢是在查詢中的查詢,即巢狀查詢。子查詢先執行,然後執行其父查詢。我們可以最多有 15 層子查詢。例如,如果我們在 DB2 中有以下 ORDERS 表。ORDER_IDORDER_TOTALZ223451267Z629986734Z569028815Z5691178990Z56915432Z5691877453如果我們想從 ORDERS 表中提取所有 ORDER_TOTAL 大於整體平均值的訂單,則可以使用以下子查詢。示例SELECT ORDER_ID FROM ORDERS WHERE ORDER_TOTAL > (SELECT AVG(ORDER_TOTAL) FROM ORDERS)該... 閱讀更多
427 次瀏覽
OUTER JOIN 的結果包括 WHERE 子句中匹配的行和不匹配的行。DB2 中的 OUTER JOIN 主要有兩個限制。OUTER JOIN 的 WHERE 子句只能包含“=”關係運算符。在兩個或多個表的 OUTER JOIN 的情況下,不允許使用等。此外,WHERE 子句中的兩個或多個條件只能與 AND 邏輯運算子一起使用,其他邏輯運算子(如 OR、NOT)不允許使用。處理 NULL 運算子的函式(如 VALUE 和 COALESCE)不能與 OUTER JOIN 一起使用。例如,如果我們有兩個... 閱讀更多
589 次瀏覽
DB2 有一個 DCL 概念,透過它我們可以控制對 DB2 物件(如表、計劃等)的訪問。DCL 代表資料控制語言,使用它我們可以向 DB2 物件提供和撤銷使用者訪問許可權。GRANT 命令將向用戶授予對所提及物件的訪問許可權,而 REVOKE 命令將撤銷使用者的訪問許可權。例如,如果我們必須向用戶 REL123X 提供 ORDERS 表上的 SELECT 和 UPDATE 訪問許可權,則我們將執行以下命令。GRANT SELECT, UPDATE ON ORDERS TO REL123X如果我們想提供 INSERT 訪問許可權,則我們將使用以下命令。GRANT ... 閱讀更多
211 次瀏覽
當任何應用程式使用該資源時,DB2 會對錶、表空間等資源進行鎖定。在 COBOL-DB2 程式中,如果我們正在修改或刪除表中的資料,則 DB2 會放置鎖。當我們給出 ROLLBACK 語句以恢復對資料庫所做的更改時,DB2 持有的所有鎖都會預設釋放。如果我們希望即使在回滾後也保持對資源的鎖定,則必須使用 ON ROLLBACK RETAIN LOCKS 而不是 ROLLBACK。例如,考慮一個用 FOR UPDATE OF 子句宣告的游標 ORDER_CUR。因此,一旦... 閱讀更多
2K+ 次瀏覽
問題:如何在 DB2 中使用 SAVEPOINT?SAVE-POINT 在 DB2 中的目的是什麼?藉助示例說明。解決方案SAVEPOINT 用作標記或標籤,以在不提交的情況下儲存資料庫中的更改。在對資料庫進行更改後,我們可以給出命名 SAVEPOINT 語句,然後在任何時候都可以使用 ROLLBACK 語句將更改回滾到此儲存點。實際上,我們可以在 COBOL-DB2 程式中有多個 SAVEPOINT,並且可以使用 ROLLBACK 跳回這些 SAVEPOINT 中的任何一個。這將恢復所做的所有更改... 閱讀更多