跳到主要内容

SQL 方言与兼容性

本页面详细介绍了 Databend 支持的 SQL 方言,以及其对 SQL 标准的兼容性,特别是对 SQL:2011 特性的支持情况。

支持的 SQL 方言

SQL 方言指的是结构化查询语言(SQL)的特定变体或风格。Databend 默认支持 PostgreSQL 方言,并提供了切换到其他支持方言的灵活性。请参考下表了解支持的方言及其简要描述:

方言介绍了解更多
PostgreSQL默认支持的方言,常用于企业环境中https://www.postgresql.org/
MySQL开源数据库管理系统https://www.mysql.com/
Hive用于大数据处理的数据仓库https://hive.apache.org/
PrqlPRQL 是一种用于数据转换的现代语言——简单、强大、管道化的 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-01INTEGER 和 SMALLINT 数据类型
E011-02REAL、DOUBLE PRECISION 和 FLOAT 数据类型
E011-03DECIMAL 和 NUMERIC 数据类型
E011-04算术运算符
E011-05数值比较
E011-06数值数据类型之间的隐式转换
E021字符串类型部分
E021-01CHARACTER 数据类型不支持定长字符串类型
E021-02CHARACTER VARYING 数据类型
E021-03字符字面量
E021-04CHARACTER_LENGTH 函数
E021-05OCTET_LENGTH 函数
E021-06SUBSTRING
E021-07字符串连接
E021-08UPPER 和 LOWER 函数
E021-09TRIM 函数
E021-10定长和变长字符串类型之间的隐式转换不支持定长字符串类型
E021-11POSITION 函数
E021-12字符串比较
E031标识符
E031-01带分隔符的标识符
E031-02小写标识符
E031-03尾部下划线
E051基本查询规范部分
E051-01SELECT DISTINCT
E051-02GROUP BY 子句
E051-04GROUP BY 可以包含不在 SELECT 列表中的列
E051-05选择项可以重命名
E051-06HAVING 子句
E051-07限定符 * 在选择列表中
E051-08FROM 子句中的关联名称
E051-09在 FROM 子句中重命名列
E061基本谓词和搜索条件部分
E061-01比较谓词
E061-02BETWEEN 谓词
E061-03带值列表的 IN 谓词
E061-04LIKE 谓词
E061-05LIKE 谓词:ESCAPE 子句
E061-06NULL 谓词
E061-07量化比较谓词
E061-08EXISTS 谓词
E061-09比较谓词中的子查询
E061-11IN 谓词中的子查询
E061-12量化比较谓词中的子查询
E061-13相关子查询
E061-14搜索条件
E071基本查询表达式部分
E071-01UNION DISTINCT 表操作符
E071-02UNION ALL 表操作符
E071-03EXCEPT DISTINCT 表操作符
E071-05通过表操作符组合的列不需要完全相同的数据类型部分只有可以隐式转换的列才能通过表操作符组合。
E071-06子查询中的表操作符
E081基本权限部分
E081-01表级别的 SELECT 权限
E081-02DELETE 权限
E081-03表级别的 INSERT 权限
E081-04表级别的 UPDATE 权限
E081-05列级别的 UPDATE 权限
E081-06表级别的 REFERENCES 权限
E081-07列级别的 REFERENCES 权限
E081-08WITH GRANT OPTION
E081-09USAGE 权限
E081-10EXECUTE 权限
E091集合函数
E091-01AVG
E091-02COUNT
E091-03MAX
E091-04MIN
E091-05SUM
E091-06ALL 量词
E091-07DISTINCT 量词部分目前,Databend 支持 COUNT(DISTINCT ...) 和 SELECT DISTINCT ... 查询。
E101基本数据操作部分
E101-01INSERT 语句
E101-03搜索式 UPDATE 语句
E101-04搜索式 DELETE 语句
E111单行 SELECT 语句
E121基本游标支持部分
E121-01DECLARE CURSOR
E121-02ORDER BY 列不需要在选择列表中
E121-03ORDER BY 子句中的值表达式
E121-04OPEN 语句
E121-06定位式 UPDATE 语句
E121-07定位式 DELETE 语句
E121-08CLOSE 语句
E121-10FETCH 语句:隐式 NEXT
E121-17WITH HOLD 游标
E131空值支持(用空值代替值)
E141基本完整性约束
E141-01NOT NULL 约束Databend 默认:所有列可为空。
E141-02NOT NULL 列的 UNIQUE 约束
E141-03PRIMARY KEY 约束
E141-04基本 FOREIGN KEY 约束,默认情况下引用删除操作和引用更新操作为 NO ACTION
E141-06CHECK 约束
E141-07列默认值
E141-08PRIMARY KEY 上推断的 NOT NULL
E141-10外键中的名称可以以任何顺序指定
E151事务支持部分
E151-01COMMIT 语句部分Databend 仅支持每个单独的 DML 语句的隐式事务。
E151-02ROLLBACK 语句
E152基本 SET TRANSACTION 语句
E152-01SET TRANSACTION 语句:ISOLATION LEVEL SERIALIZABLE 子句
E152-02SET TRANSACTION 语句:READ ONLY 和 READ WRITE 子句
E153带子查询的可更新查询
E161使用双减号的 SQL 注释
E171SQLSTATE 支持
E182宿主语言绑定
F031基本模式操作
F031-01创建持久基表的 CREATE TABLE 语句
F031-02CREATE VIEW 语句
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册