最近打算开始写一个新的系列,比较主流国产数据库在 SQL 实现上的功能差异。如果你也想要了解这些内容,可以将公众号设置为星标。
SQL 查询中有一种特殊的语法,我们称之为无表查询。因为它只有 SELECT 关键字,而没有 FROM 子句。例如:
SELECT 1 + 1 AS res;
res|
---+
2|
这种方式可以方便快速查询表达式或者函数的结果。
目前一些主流的数据库都支持这种用法,包括 MySQL、Oracle、PostgreSQL、SQL Sever、SQLite 等。
那么,我们常用的国产数据库能不能够支持无表查询呢?
数据库 | 无表查询 | 备注 |
---|---|---|
OceanBase | ✔️ | MySQL 兼容模式下支持;Oracle 兼容模式下从 4.0 版本开始支持。 |
GoldenDB | 区分模式 | MySQL 兼容模式下支持;Oracle 兼容模式下不支持。 |
金仓 | ✔️ | 主要兼容 PostgreSQL 语法。 |
PolarDB | ✔️ | MySQL 引擎和 PostgreSQL 引擎均支持。 |
达梦 | ✔️ | DM8 开始支持。 |
GBASE | 区分产品 | GBase 8c 支持,GBase 8a 和 GBase 8s 不支持。 |
TDSQL | ✔️ | MySQL 引擎和 PostgreSQL 引擎均支持。 |
TiDB | ✔️ | 兼容 MySQL 语法。 |
GaussDB | ✔️ | 兼容 PostgreSQL 语法。 |
YashanDB | ✔️ | Oracle 兼容和 MySQL 兼容模式都支持。 |
你还用过哪个国产数据库?它是否支持无表查询?