Sql-Standard

哪些計算不能在標準 SQL 中執行?

  • October 29, 2018

我知道循環不能用標準 SQL 表示。它不能執行哪些其他形式的處理?

我認為在這裡註意關係代數 <> SQL 可能是合適的。關係代數(Codd 的論文“大型共享數據庫的關係數據模型”中描述的關係數據庫的理論基礎)不是圖靈完備的。該模型具有哥德爾完備性,這使得它在表達能力上等同於一階謂詞演算——對你我來說是普通的邏輯表達式。

但是,大多數 SQL 方言具有各種構造,包括遞歸 CTE 和儲存過程中的流控制,這使得它們有效地實現了圖靈完備。 圖靈完備的語言可以表達任何可以用算法描述的計算。

值得注意的是,嚴格定義圖靈完備性需要無限儲存,這在物理上是不可能的。但是,在將程式語言描述為圖靈完備時,這一要求通常會被非正式地放寬。

循環不能用標準 SQL 表示

事實並非如此。該標準的相關部分稱為SQL/PSM(持久儲存模組)。它的程序範式包括“循環”。

然而,考慮到核心標準 SQL至少從 SQL-92 開始就已經是關係完整的(根據Codd對該術語的定義),允許任意複雜性的“計算”。此外,SQL 查詢更像是一種規範,而不是一種實現,即說明 DBMS 執行它認為合適的意圖,這本身可能涉及“循環”。

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