Postgresql

為什麼標量函式特別?作為初學者嘗試理解數據庫術語的案例研究

  • July 27, 2022

我正在嘗試學習數據庫的基礎知識,但與我學到的其他東西相比,我發現這些術語特別難以理解。我看過的大多數數據庫教程和文件都用其他數據庫術語解釋了一切。大多數範例僅顯示程式碼而不顯示實際輸出,因此我經常不清楚預期的輸出是什麼。我通常更不清楚預期的案例是什麼。

例如,以我最近遇到的術語“標量函式”為例。它在這裡的定義類似於我發現的其他定義。

https://raima.com/database-terminology/

標量函式 – 內置 SQL 函式或使用者定義函式,它返回單個值,該值僅在呼叫函式時根據任何所需參數的值計算得出。

為什麼這麼特別?這與僅輸出一個值的函式有何不同?為什麼論點是“必需論點”這一事實是一個值得注意的區別?實際上,為什麼指定使用標量函式很重要?

我將不勝感激對這個特定問題的回答和對數據庫(最好是 Postgres)學習材料的引用,這些學習材料有助於以盡可能最少的技術方式解釋每個技術術語。

標量只是數據庫可以擁有的一種函式。例如,在 Postgres 中,除了標量函式之外,還可以定義一個返回記錄(標量元組)的函式和返回一組項目(標量或記錄)的函式,本質上是一個表。

其他 DBMS 也有類似的選項。

> > 返回單個值的函式,該值僅在呼叫函式時根據任何必需參數的值計算得出。 > > >

為什麼論點是“必需論點”這一事實是一個值得注意的區別?

這只是他們一方的草率措辭。標量(或任何其他類型的)函式不必有任何參數,無論是必需的還是可選的,它的結果不必依賴於它們中的任何一個,並且無論參數如何,它總是可以返回相同的值“在呼叫函式的時間”。

這不是草率措辭的唯一出現。正如評論中提到的那樣:

特定於應用程序的 SQL 可呼叫標量或聚合函式

儘管聚合函式標量函式,因為它們每個都返回一個值。

為什麼標量函式特別?

標量函式只是一個返回“標量”值的函式,即單個值;不是一對/元組(記錄)或一組元組(即關係表)。PostgreSQL 函式可以返回任何這些東西。這是一個不特定於數據庫或 SQL 的一般概念。

為什麼特別?

IMO,這是因為標量函式的返回值是特殊的(就維度而言最簡單),並且返回值可以在許多需要單個值的地方使用。例如,如果您將返回值與 WHERE 子句中的數字進行比較,例如

WHERE my_func(...) > 5

或在需要單個值的子查詢中。

大體構想是,很多運算元/函式(>如上)的參數必須具有相同的維度。並且標量值被大量使用。

引用自:https://dba.stackexchange.com/questions/314944