小编典典

SQL 甚至 TSQL 图灵完备吗?

all

这是今天办公室里出现的。我没有做这种事情的计划,但理论上你能用 SQL 写一个编译器吗?乍一看,它似乎是图灵完备的,尽管对于许多类别的问题来说非常麻烦。

如果它不是图灵完备的,它需要什么?

注意:我不想做任何事情,比如用 SQL 编写编译器,我知道这样做很愚蠢,所以如果我们能避免讨论,我将不胜感激。


阅读 257

收藏
2022-07-01

共1个答案

小编典典

事实证明,即使没有真正的“脚本”扩展,例如 PL/SQL 或 PSM(它们被设计为真正的编程语言,所以这有点作弊),SQL 也可以是图灵完备的。

这组幻灯片中,Andrew
Gierth 通过构建循环标签系统证明了 CTE
和 Windowing SQL 是图灵完备的,已被证明是图灵完备的。然而,CTE
特性是重要的部分——它允许您创建可以引用自身的命名子表达式,从而递归地解决问题。

有趣的是,添加 CTE 并不是为了将 SQL 转变为编程语言——只是为了将声明式查询语言转变为更强大的声明式查询语言。有点像在 C++
中,其模板被证明是图灵完备的,尽管它们并非旨在创建元编程语言。

哦,SQL 示例中的 Mandelbrot
也非常令人印象深刻 :)

2022-07-01