📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

SQL 方言与一致性



本页介绍 TiDB Cloud Lake 支持的 SQL 方言,以及它对 SQL 标准的符合情况,重点说明 SQL:2011 特性及其在 TiDB Cloud Lake 中的支持状态。

支持的 SQL 方言

SQL 方言是指结构化查询语言(Structured Query Language)的一种特定变体或风格。TiDB Cloud Lake 默认支持 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 设置:

-- Set SQL dialect to PRQL SET sql_dialect = 'Prql'; -- Display current dialect SHOW SETTINGS LIKE 'sql_dialect';

SQL 一致性摘要

TiDB Cloud Lake 致力于遵循 SQL 标准,尤其支持 ISO/IEC 9075:2011,也称为 SQL:2011。虽然这并不是一份完整的符合性声明,但 TiDB Cloud Lake 已实现 SQL 标准要求的许多特性,只是在语法或函数上通常存在一些细微差异。本页概述了 TiDB Cloud Lake 对 SQL:2011 标准的符合程度。

Feature ID功能名称是否支持说明
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-07select 列表中的限定 *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当前,TiDB Cloud Lake 支持 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 列不必出现在 select 列表中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
E131空值支持(以空值代替值)Yes
E141基本完整性约束No
E141-01NOT NULL 约束YesTiDB Cloud Lake 中的默认行为:所有列都允许为空。
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 语句PartialTiDB Cloud Lake 仅支持对每条单独 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

文档内容是否有帮助?