Google 的研究人员认为,可以通过引入一种 管道操作符(pipe operator) 来改进 SQL。该语法已经在 Google 内部使用。不过,SQLite 数据库的创建者 D. Richard Hipp 对这一方案并不完全认同——尽管他已经在一个实验版本的 SQLite 中实现了部分功能进行测试。
在题为 《SQL has problems. We can fix them: pipe syntax in SQL》 的论文中,来自 Google 的 13 名研究人员指出:
SQL 是一门历史悠久的语言,但存在明显的设计问题,使它难以学习、难以使用,也难以扩展。
SQL 的一个典型问题在于查询语句的结构:
虽然查询通常以 SELECT 子句开头,但它是否有效却依赖后面才出现的 FROM 子句。从逻辑上讲,如果 FROM 放在最前面会更加合理。
研究人员因此提出,用一种 管道式语法 来替代 SQL 中“严格固定的子句顺序”,使查询步骤可以像流水线一样连接。
他们使用的管道符是 |>,而不是更常见的 |,以避免与 SQL 中表示按位或(bitwise OR)的 | 运算符产生歧义。
论文还指出,标准 SQL 中存在多方面的问题,例如:
- 子句顺序不直观
- 需要重复编写某些子句
- 经常必须使用子查询
- 公共表表达式(CTE) 语法过于冗长
实际上,Google 已经在内部实现了这种语法——作为 GoogleSQL 的一个特性。GoogleSQL 是 Google 使用的一种 SQL 方言,应用于包括 BigQuery 在内的数据库系统。
根据论文内容,Google 目前正在探索 在 BigQuery 和 Google Cloud Spanner 中对外支持这种管道语法。
作为业界巨头,如果 Google 将该语法正式开放给外部用户,它很可能被广泛采用。不过在 SQLite 官方论坛的讨论中,Hipp 表示:
“我并不喜欢这个管道操作符……论文在第 4.1.4 节列出了 11 个理由说明它的好处,但我依然没有被说服。”
不过他也承认,在论文中的某些示例里,“FROM 放在最前面确实更符合语句的语义”。
不久之后,Hipp 发布了一个 SQLite 的实验性快速原型,支持部分提议中的管道语法,用于测试其可行性。
SQLite 可能是世界上使用最广泛的关系型数据库之一(尽管多用于小规模应用)。Hipp 表示,他的目标是:
“让 SQLite 在 2050 年之前仍然保持相关性和生命力。”
但他同时强调,并不希望在 SQLite 中加入过多非标准扩展。他还表示会参考 PostgreSQL 的做法:
“如果 PostgreSQL 支持 FROM-first 查询语法,我也会在 SQLite 中实现。”
不过,在研究了自己的实际使用场景(例如他开发的 Fossil 版本控制系统)后,Hipp 表示自己对 Google 的管道语法兴趣已经不大。
他仍然喜欢 FROM-first 的想法,但不喜欢管道语法本身。
在 Hacker News 上,一位开发者评论道:
“如果 SQL 能支持 FROM-first,那将是一个巨大的改进。我只希望 PostgreSQL 等数据库能联合起来,将这样的扩展标准化。”








苏公网安备32021302001419号