跳到主要内容

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 标准的兼容程度。

Feature IDFeature NameSupported?Note
E011数值数据类型Yes
E011-01INTEGER 和 SMALLINT 数据类型Yes
E011-02REAL, DOUBLE PRECISION 和 FLOAT 数据类型Yes
E011-03DECIMAL 和 NUMERIC 数据类型Yes
E011-04算术运算符Yes
E011-05数值比较Yes
E011-06数值数据类型之间的隐式转换Yes
E021字符串类型Partial
E021-01CHARACTER 数据类型No不支持固定长度字符串类型
E021-02CHARACTER VARYING 数据类型Yes
E021-03字符串字面量Yes
E021-04CHARACTER_LENGTH 函数Yes
E021-05OCTET_LENGTH 函数Yes
E021-06SUBSTRINGYes
E021-07字符串连接Yes
E021-08UPPER 和 LOWER 函数Yes
E021-09TRIM 函数Yes
E021-10固定长度和可变长度字符串类型之间的隐式转换No不支持固定长度字符串类型
E021-11POSITION 函数Yes
E021-12字符串比较Yes
E031标识符Yes
E031-01分隔标识符Yes
E031-02小写标识符Yes
E031-03尾随下划线Yes
E051基本查询规范Partial
E051-01SELECT DISTINCTYes
E051-02GROUP BY 子句Yes
E051-04GROUP BY 可以包含不在 SELECT 列表中的列Yes
E051-05可以重命名选择项Yes
E051-06HAVING 子句Yes
E051-07限定 * 在选择列表中No
E051-08FROM 子句中的相关名称Yes
E051-09重命名 FROM 子句中的列No
E061基本谓词和搜索条件Partial
E061-01比较谓词Yes
E061-02BETWEEN 谓词Yes
E061-03带有值列表的 IN 谓词Yes
E061-04LIKE 谓词Yes
E061-05LIKE 谓词: ESCAPE 子句No
E061-06NULL 谓词Yes
E061-07量化比较谓词Yes
E061-08EXISTS 谓词Yes
E061-09比较谓词中的子查询Yes
E061-11IN 谓词中的子查询Yes
E061-12量化比较谓词中的子查询Yes
E061-13相关子查询Yes
E061-14搜索条件Yes
E071基本查询表达式Partial
E071-01UNION DISTINCT 表运算符Yes
E071-02UNION ALL 表运算符Yes
E071-03EXCEPT DISTINCT 表运算符Yes
E071-05通过表运算符组合的列不需要具有完全相同的数据类型Partial只有具有可以隐式强制转换的数据类型的列才允许与表运算符组合。
E071-06子查询中的表运算符Yes
E081基本权限Partial
E081-01表级别的 SELECT 权限Yes
E081-02DELETE 权限Yes
E081-03表级别的 INSERT 权限Yes
E081-04表级别的 UPDATE 权限Yes
E081-05列级别的 UPDATE 权限No
E081-06表级别的 REFERENCES 权限No
E081-07列级别的 REFERENCES 权限No
E081-08WITH GRANT OPTIONNo
E081-09USAGE 权限No
E081-10EXECUTE 权限No
E091集合函数Yes
E091-01AVGYes
E091-02COUNTYes
E091-03MAXYes
E091-04MINYes
E091-05SUMYes
E091-06ALL 量词Yes
E091-07DISTINCT 量词Partial目前,Databend 支持 COUNT(DISTINCT ...) 和 SELECT DISTINCT ... 查询。
E101基本数据操作Partial
E101-01INSERT 语句Yes
E101-03搜索的 UPDATE 语句Yes
E101-04搜索的 DELETE 语句Yes
E111单行 SELECT 语句Yes
E121基本游标支持Partial
E121-01DECLARE CURSORNo
E121-02ORDER BY 列不需要在选择列表中Yes
E121-03ORDER BY 子句中的值表达式Yes
E121-04OPEN 语句No
E121-06定位的 UPDATE 语句No
E121-07定位的 DELETE 语句No
E121-08CLOSE 语句No
E121-10FETCH 语句: 隐式 NEXTNo
E121-17WITH HOLD 游标No
E131Null 值支持(用 null 代替值)Yes
E141基本完整性约束No
E141-01NOT NULL 约束YesDatabend 中的默认设置:所有列都可为空。
E141-02NOT NULL 列的 UNIQUE 约束No
E141-03PRIMARY KEY 约束No
E141-04基本 FOREIGN KEY 约束,对于引用删除操作和引用更新操作,默认值为 NO ACTIONNo
E141-06CHECK 约束No
E141-07列默认值Yes
E141-08在 PRIMARY KEY 上推断 NOT NULLNo
E141-10外键中的名称可以按任何顺序指定No
E151事务支持Partial
E151-01COMMIT 语句PartialDatabend 仅支持每个单独 DML 语句的隐式事务。
E151-02ROLLBACK 语句No
E152基本 SET TRANSACTION 语句No
E152-01SET TRANSACTION 语句: ISOLATION LEVEL SERIALIZABLE 子句No
E152-02SET TRANSACTION 语句: READ ONLY 和 READ WRITE 子句No
E153带有子查询的可更新查询Yes
E161使用前导双减号的 SQL 注释Yes
E171SQLSTATE 支持No
E182宿主语言绑定No
F031基本模式操作Yes
F031-01用于创建持久基本表的 CREATE TABLE 语句Yes
F031-02CREATE VIEW 语句Yes
F031-03GRANT 语句Partial
F031-04ALTER TABLE 语句: ADD COLUMN 子句Yes
F031-13DROP TABLE 语句: RESTRICT 子句Partial
F031-16DROP VIEW 语句: RESTRICT 子句Partial
F031-19REVOKE 语句: RESTRICT 子句Partial
F041基本连接表Yes
F041-01内连接(但不一定是 INNER 关键字)Yes
F041-02INNER 关键字Yes
F041-03LEFT OUTER JOINYes
F041-04RIGHT OUTER JOINYes
F041-05可以嵌套外连接Yes
F041-07左外连接或右外连接中的内部表也可以在内连接中使用Yes
F041-08支持所有比较运算符(而不仅仅是 =)Yes
F051基本日期和时间Partial
F051-01DATE 数据类型(包括对 DATE 字面量的支持)Yes
F051-02TIME 数据类型(包括对 TIME 字面量的支持),小数秒精度至少为 0No
F051-03TIMESTAMP 数据类型(包括对 TIMESTAMP 字面量的支持),小数秒精度至少为 0 和 6Yes
F051-04DATE、TIME 和 TIMESTAMP 数据类型上的比较谓词Yes
F051-05datetime 类型和字符串类型之间的显式 CASTYes
F051-06CURRENT_DATEYes
F051-07LOCALTIMEYes
F051-08LOCALTIMESTAMPYes
F081视图中的 UNION 和 EXCEPTYes
F131分组操作Yes
F131-01在具有分组视图的查询中支持 WHERE、GROUP BY 和 HAVING 子句Yes
F131-02在具有分组视图的查询中支持多个表Yes
F131-03在具有分组视图的查询中支持集合函数Yes
F131-04带有 GROUP BY 和 HAVING 子句以及分组视图的子查询Yes
F131-05带有 GROUP BY 和 HAVING 子句以及分组视图的单行 SELECTYes
F181多模块支持No
F201CAST 函数Yes
F221显式默认值No
F261CASE 表达式Yes
F261-01简单 CASEYes
F261-02搜索的 CASEYes
F261-03NULLIFYes
F261-04COALESCEYes
F311模式定义语句Partial
F311-01CREATE SCHEMAYes
F311-02用于持久基本表的 CREATE TABLEYes
F311-03CREATE VIEWYes
F311-04CREATE VIEW: WITH CHECK OPTIONNo
F311-05GRANT 语句Partial
F471标量子查询值Yes
F481扩展的 NULL 谓词Yes
F812基本标记No
S011不同的数据类型No
T321基本 SQL 调用例程No
T321-01没有重载的用户定义函数Yes
T321-02没有重载的用户定义存储过程No
T321-03函数调用Yes
T321-04CALL 语句No
T321-05RETURN 语句No
T631具有一个列表元素的 IN 谓词Yes
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册