跳到主要内容

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/
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-03IN 谓词与值列表
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基本模式操作
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册