《程序设计能从冯·诺依曼风格中解放出来吗?程序的函数风格及其代数》中提到,只要使用变量,就无法逃出地址的魔咒。反过来说,之所以SQL 能成为不依赖于地址的自由的语言,也是因为它不使用变量。
其实 SQL 还是有变量的,也可以理解成它是个别数据库厂商违反 SQL 标准而进行的扩展吧。
与 SQL 一样不使用变量的语言还有 Lisp。它是一种年龄仅次于 Fortran 的高级语言,已经可以称得上是编程语言中的“老将”。
3、SQL 是一种什么语言SQL 很大程度上是一种声明式编程,但是其也含有过程式编程的元素。
例如,关联子查询是为了使 SQL 能够实现类似面向过程语言中循环的功能而引入的。
SQL 在设计之初,就有意地避免了循环。所以 SQL 中没有专门的循环语句。
虽然可以使用游标实现循环,但是这样的话还是面向过程的做法。
所以,我们用好 SQL,就要有从面向过程思维向声明式思维、面向集合思维转变的意识。