跳到主要内容

SQL 方言和一致性

本页面提供了 Databend 支持的 SQL 方言的详细信息,以及 Databend 与 SQL 标准的一致性,特别关注 SQL:2011 特性及其在 Databend 中的支持状态。

支持的 SQL 方言

SQL 方言是指 Structured Query Language(结构化查询语言)的特定变体或风格。Databend 默认支持 PostgreSQL 方言,并允许灵活地切换到其他受支持的方言。查阅下表,以了解 Databend 支持的方言及其各自的简要介绍:

方言简介了解更多
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-09FROM 子句中重命名列
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**使用前导双减号
这篇文章对您有帮助吗?
Yes
No
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册