為什麼標量函式特別?作為初學者嘗試理解數據庫術語的案例研究
我正在嘗試學習數據庫的基礎知識,但與我學到的其他東西相比,我發現這些術語特別難以理解。我看過的大多數數據庫教程和文件都用其他數據庫術語解釋了一切。大多數範例僅顯示程式碼而不顯示實際輸出,因此我經常不清楚預期的輸出是什麼。我通常更不清楚預期的案例是什麼。
例如,以我最近遇到的術語“標量函式”為例。它在這裡的定義類似於我發現的其他定義。
https://raima.com/database-terminology/:
標量函式 – 內置 SQL 函式或使用者定義函式,它返回單個值,該值僅在呼叫函式時根據任何所需參數的值計算得出。
為什麼這麼特別?這與僅輸出一個值的函式有何不同?為什麼論點是“必需論點”這一事實是一個值得注意的區別?實際上,為什麼指定使用標量函式很重要?
我將不勝感激對這個特定問題的回答和對數據庫(最好是 Postgres)學習材料的引用,這些學習材料有助於以盡可能最少的技術方式解釋每個技術術語。
標量只是數據庫可以擁有的一種函式。例如,在 Postgres 中,除了標量函式之外,還可以定義一個返回記錄(標量元組)的函式和返回一組項目(標量或記錄)的函式,本質上是一個表。
其他 DBMS 也有類似的選項。
> > 返回單個值的函式,該值僅在呼叫函式時根據任何必需參數的值計算得出。 > > >
為什麼論點是“必需論點”這一事實是一個值得注意的區別?
這只是他們一方的草率措辭。標量(或任何其他類型的)函式不必有任何參數,無論是必需的還是可選的,它的結果不必依賴於它們中的任何一個,並且無論參數如何,它總是可以返回相同的值“在呼叫函式的時間”。
這不是草率措辭的唯一出現。正如評論中提到的那樣:
特定於應用程序的 SQL 可呼叫標量或聚合函式
儘管聚合函式是標量函式,因為它們每個都返回一個值。
為什麼標量函式特別?
標量函式只是一個返回“標量”值的函式,即單個值;不是一對/元組(記錄)或一組元組(即關係表)。PostgreSQL 函式可以返回任何這些東西。這是一個不特定於數據庫或 SQL 的一般概念。
為什麼特別?
IMO,這是因為標量函式的返回值是特殊的(就維度而言最簡單),並且返回值可以在許多需要單個值的地方使用。例如,如果您將返回值與 WHERE 子句中的數字進行比較,例如
WHERE my_func(...) > 5
或在需要單個值的子查詢中。
大體構想是,很多運算元/函式(
>
如上)的參數必須具有相同的維度。並且標量值被大量使用。