SQL 方言与一致性
本页详细介绍了 Databend 支持的 SQL 方言及其与 SQL 标准的符合性,特别是针对 SQL:2011 特性和 Databend 中的支持状态。
支持的 SQL 方言
SQL 方言指的是结构化查询语言的特定变体或风格。Databend 默认支持 PostgreSQL
方言,并提供切换到其他支持方言的灵活性。请参阅下表了解支持的方言及其各自的简要描述:
方言 | 介绍 | 了解更多 |
---|---|---|
PostgreSQL | 默认支持的方言,企业中常用 | https://www.postgresql.org/ |
MySQL | 开源数据库管理系统 | https://www.mysql.com/ |
Hive | 大数据处理的数据仓库 | https://hive.apache.org/ |
Prql | PRQL 是一种用于转换数据的现代语言 — 一种简单、强大、管道化的 SQL 替代方案 | https://github.com/PRQL/prql |
Experimental | 用于测试和研究的实验性方言 | N/A |
要在支持的 SQL 方言之间切换或显示当前方言,请使用 sql_dialect
设置:
示例:
-- 将 SQL 方言设置为 PRQL
SET sql_dialect = 'Prql';
-- 显示当前方言
SHOW SETTINGS LIKE 'sql_dialect';
SQL 一致性概述
Databend 旨在符合 SQL 标准,特别是支持 ISO/IEC 9075:2011,也称为 SQL:2011。虽然这不是符合性的详尽声明,但 Databend 包含了 SQL 标准所需的许多特性,通常在语法或功能上略有不同。本页概述了 Databend 与 SQL:2011 标准的符合性水平。
功能ID | 功能名称 | 支持情况 | 备注 |
---|---|---|---|
E011 | 数值数据类型 | 是 | |
E011-01 | INTEGER 和 SMALLINT 数据类型 | 是 | |
E011-02 | REAL, DOUBLE PRECISION 和 FLOAT 数据类型 | 是 | |
E011-03 | DECIMAL 和 NUMERIC 数据类型 | 是 | |
E011-04 | 算术运算符 | 是 | |
E011-05 | 数值比较 | 是 | |
E011-06 | 数值数据类型之间的隐式类型转换 | 是 | |
E021 | 字符串类型 | 部分 | |
E021-01 | CHARACTER 数据类型 | 否 | 不支持固定长度字符串类型 |
E021-02 | CHARACTER VARYING 数据类型 | 是 | |
E021-03 | 字符字面量 | 是 | |
E021-04 | CHARACTER_LENGTH 函数 | 是 | |
E021-05 | OCTET_LENGTH 函数 | 是 | |
E021-06 | SUBSTRING | 是 | |
E021-07 | 字符串连接 | 是 | |
E021-08 | UPPER 和 LOWER 函数 | 是 | |
E021-09 | TRIM 函数 | 是 | |
E021-10 | 固定长度和可变长度字符串类型之间的隐式类型转换 | 否 | 不支持固定长度字符串类型 |
E021-11 | POSITION 函数 | 是 | |
E021-12 | 字符比较 | 是 | |
E031 | 标识符 | 是 | |
E031-01 | 带分隔符的标识符 | 是 | |
E031-02 | 小写标识符 | 是 | |
E031-03 | 尾部下划线 | 是 | |
E051 | 基本查询规范 | 部分 | |
E051-01 | SELECT DISTINCT | 是 | |
E051-02 | GROUP BY 子句 | 是 | |
E051-04 | GROUP BY 可以包含不在 SELECT 列表中的列 | 是 | |
E051-05 | 选择项可以重命名 | 是 | |
E051-06 | HAVING 子句 | 是 | |
E051-07 | 选择列表中的限定 * | 否 | |
E051-08 | FROM 子句中的相关名称 | 是 | |
E051-09 | FROM 子句中重命名列 | 否 | |
E061 | 基本谓词和搜索条件 | 部分 | |
E061-01 | 比较谓词 | 是 | |
E061-02 | BETWEEN 谓词 | 是 | |
E061-03 | IN 谓词与值列表 | 是 | |
E061-04 | LIKE 谓词 | 是 | |
E061-05 | LIKE 谓词:ESCAPE 子句 | 否 | |
E061-06 | NULL 谓词 | 是 | |
E061-07 | 量化比较谓词 | 是 | |
E061-08 | EXISTS 谓词 | 是 | |
E061-09 | 比较谓词中的子查询 | 是 | |
E061-11 | IN 谓词中的子查询 | 是 | |
E061-12 | 量化比较谓词中的子查询 | 是 | |
E061-13 | 相关子查询 | 是 | |
E061-14 | 搜索条件 | 是 | |
E071 | 基本查询表达式 | 部分 | |
E071-01 | UNION DISTINCT 表运算符 | 是 | |
E071-02 | UNION ALL 表运算符 |