ClickHouse/docs/zh/sql-reference/ansi.md
RegulusZ 2a76a8c8d0
Update ansi.md
Improve translation
2021-01-19 11:52:18 +08:00

45 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true ad252bbb4f 40 ANSI兼容性

Ansi Sql兼容性的ClickHouse SQL方言

!!! note "注" 本文依赖于表38, “Feature taxonomy and definition for mandatory features”, Annex F of ISO/IEC CD 9075-2:2013.

行为差异

下表列出了查询功能在ClickHouse中有效但不符合ANSI SQL标准的情况。

Feature ID 功能名称 差异
E011 数值Numeric数据类型 带小数点的数值文字被解释为近似值 (Float64)而不是精确值 (Decimal)
E051-05 SELECT字段可以重命名 字段不仅仅在SELECT结果中可被重命名
E141-01 非空约束 表中每一列默认为NOT NULL
E011-04 算术运算符 ClickHouse不会检查算法并根据自定义规则更改结果数据类型而是会溢出

功能匹配

Feature ID 功能名称 匹配 评论
E011 数字数据类型 部分{.text-warning}
E011-01 整型和小型数据类型 是 {.text-success}
E011-02 真实、双精度和浮点数据类型数据类型 部分 {.text-warning} FLOAT(<binary_precision>), REALDOUBLE PRECISION 不支持
E011-03 十进制和数值数据类型 部分 {.text-warning} 只有 DECIMAL(p,s) 支持,而不是 NUMERIC
E011-04 算术运算符 是 {.text-success}
E011-05 数字比较 是 {.text-success}
E011-06 数字数据类型之间的隐式转换 否。 {.text-danger} ANSI SQL允许在数值类型之间进行任意隐式转换而ClickHouse依赖于具有多个重载的函数而不是隐式转换
E021 字符串类型 部分{.text-warning}
E021-01 字符数据类型 否。 {.text-danger}
E021-02 字符变化数据类型 否。 {.text-danger} String 行为类似,但括号中没有长度限制
E021-03 字符文字 部分 {.text-warning} 不自动连接连续文字和字符集支持
E021-04 字符长度函数 部分 {.text-warning} 非也。 USING 条款
E021-05 OCTET_LENGTH函数 非也。 {.text-danger} LENGTH 表现类似
E021-06 SUBSTRING 部分 {.text-warning} 不支持 SIMILARESCAPE 条款,否 SUBSTRING_REGEX 备选案文
E021-07 字符串联 部分 {.text-warning} 非也。 COLLATE 条款
E021-08 上下功能 是 {.text-success}
E021-09 修剪功能 是 {.text-success}
E021-10 固定长度和可变长度字符串类型之间的隐式转换 否。 {.text-danger} ANSI SQL允许在字符串类型之间进行任意隐式转换而ClickHouse依赖于具有多个重载的函数而不是隐式转换
E021-11 职位功能 部分 {.text-warning} 不支持 INUSING 条款,否 POSITION_REGEX 备选案文
E021-12 字符比较 是 {.text-success}
E031 标识符 部分{.text-warning}
E031-01 分隔标识符 部分 {.text-warning} Unicode文字支持有限
E031-02 小写标识符 是 {.text-success}
E031-03 尾部下划线 是 {.text-success}
E051 基本查询规范 部分{.text-warning}
E051-01 SELECT DISTINCT 是 {.text-success}
E051-02 GROUP BY子句 是 {.text-success}
E051-04 分组依据可以包含不在列 <select list> 是 {.text-success}
E051-05 选择项目可以重命名 是 {.text-success}
E051-06 有条款 是 {.text-success}
E051-07 合格*在选择列表中 是 {.text-success}
E051-08 FROM子句中的关联名称 是 {.text-success}
E051-09 重命名FROM子句中的列 否。 {.text-danger}
E061 基本谓词和搜索条件 部分{.text-warning}
E061-01 比较谓词 是 {.text-success}
E061-02 谓词之间 部分 {.text-warning} 非也。 SYMMETRICASYMMETRIC 条款
E061-03 在具有值列表的谓词中 是 {.text-success}
E061-04 像谓词 是 {.text-success}
E061-05 LIKE谓词逃避条款 否。 {.text-danger}
E061-06 空谓词 是 {.text-success}
E061-07 量化比较谓词 非也。 {.text-danger}
E061-08 存在谓词 非也。 {.text-danger}
E061-09 比较谓词中的子查询 是 {.text-success}
E061-11 谓词中的子查询 是 {.text-success}
E061-12 量化比较谓词中的子查询 否。 {.text-danger}
E061-13 相关子查询 否。 {.text-danger}
E061-14 搜索条件 是 {.text-success}
E071 基本查询表达式 部分{.text-warning}
E071-01 UNION DISTINCT table运算符 否。 {.text-danger}
E071-02 联合所有表运算符 是 {.text-success}
E071-03 除了不同的表运算符 非也。 {.text-danger}
E071-05 通过表运算符组合的列不必具有完全相同的数据类型 是 {.text-success}
E071-06 子查询中的表运算符 是 {.text-success}
E081 基本特权 部分{.text-warning} 正在进行的工作
E091 设置函数 {.text-success}
E091-01 AVG 是 {.text-success}
E091-02 COUNT 是 {.text-success}
E091-03 MAX 是 {.text-success}
E091-04 MIN 是 {.text-success}
E091-05 SUM 是 {.text-success}
E091-06 全部量词 否。 {.text-danger}
E091-07 不同的量词 部分 {.text-warning} 并非所有聚合函数都受支持
E101 基本数据操作 部分{.text-warning}
E101-01 插入语句 是 {.text-success} ClickHouse中的主键并不意味着 UNIQUE 约束
E101-03 搜索更新语句 否。 {.text-danger} 有一个 ALTER UPDATE 批量数据修改语句
E101-04 搜索的删除语句 否。 {.text-danger} 有一个 ALTER DELETE 批量数据删除声明
E111 单行SELECT语句 否。{.text-danger}
E121 基本光标支持 否。{.text-danger}
E121-01 DECLARE CURSOR 否。 {.text-danger}
E121-02 按列排序不需要在选择列表中 否。 {.text-danger}
E121-03 按顺序排列的值表达式 否。 {.text-danger}
E121-04 公开声明 否。 {.text-danger}
E121-06 定位更新语句 否。 {.text-danger}
E121-07 定位删除语句 否。 {.text-danger}
E121-08 关闭声明 否。 {.text-danger}
E121-10 FETCH语句隐式NEXT 否。 {.text-danger}
E121-17 使用保持游标 否。 {.text-danger}
E131 空值支持(空值代替值) 部分{.text-warning} 一些限制适用
E141 基本完整性约束 部分{.text-warning}
E141-01 非空约束 是 {.text-success} 注: NOT NULL 默认情况下,表列隐含
E141-02 非空列的唯一约束 否。 {.text-danger}
E141-03 主键约束 否。 {.text-danger}
E141-04 对于引用删除操作和引用更新操作,具有默认无操作的基本外键约束 否。 {.text-danger}
E141-06 检查约束 是 {.text-success}
E141-07 列默认值 是 {.text-success}
E141-08 在主键上推断为非NULL 是 {.text-success}
E141-10 可以按任何顺序指定外键中的名称 否。 {.text-danger}
E151 交易支持 否。{.text-danger}
E151-01 提交语句 否。 {.text-danger}
E151-02 回滚语句 否。 {.text-danger}
E152 基本设置事务语句 否。{.text-danger}
E152-01 SET TRANSACTION语句隔离级别SERIALIZABLE子句 否。 {.text-danger}
E152-02 SET TRANSACTION语句只读和读写子句 否。 {.text-danger}
E153 具有子查询的可更新查询 否。{.text-danger}
E161 SQL注释使用前导双减 {.text-success}
E171 SQLSTATE支持 否。{.text-danger}
E182 主机语言绑定 否。{.text-danger}
F031 基本架构操作 部分{.text-warning}
F031-01 CREATE TABLE语句创建持久基表 部分 {.text-warning} 否。 SYSTEM VERSIONING, ON COMMIT, GLOBAL, LOCAL, PRESERVE, DELETE, REF IS, WITH OPTIONS, UNDER, LIKE, PERIOD FOR 子句,不支持用户解析的数据类型
F031-02 创建视图语句 部分 {.text-warning} 否。 RECURSIVE, CHECK, UNDER, WITH OPTIONS 子句,不支持用户解析的数据类型
F031-03 赠款声明 是 {.text-success}
F031-04 ALTER TABLE语句ADD COLUMN子句 部分 {.text-warning} 不支持 GENERATED 条款和系统时间段
F031-13 DROP TABLE语句RESTRICT子句 否。 {.text-danger}
F031-16 DROP VIEW语句RESTRICT子句 否。 {.text-danger}
F031-19 REVOKE语句RESTRICT子句 否。 {.text-danger}
F041 基本连接表 部分{.text-warning}
F041-01 Inner join但不一定是INNER关键字) 是 {.text-success}
F041-02 内部关键字 是 {.text-success}
F041-03 LEFT OUTER JOIN 是 {.text-success}
F041-04 RIGHT OUTER JOIN 是 {.text-success}
F041-05 可以嵌套外部连接 是 {.text-success}
F041-07 左侧或右侧外部联接中的内部表也可用于内部联接 是 {.text-success}
F041-08 支持所有比较运算符(而不仅仅是=) 否。 {.text-danger}
F051 基本日期和时间 部分{.text-warning}
F051-01 日期数据类型(包括对日期文字的支持) 部分 {.text-warning} 没有文字
F051-02 时间数据类型包括对时间文字的支持秒小数精度至少为0 否。 {.text-danger}
F051-03 时间戳数据类型包括对时间戳文字的支持小数秒精度至少为0和6 否。 {.text-danger} DateTime64 时间提供了类似的功能
F051-04 日期、时间和时间戳数据类型的比较谓词 部分 {.text-warning} 只有一种数据类型可用
F051-05 Datetime类型和字符串类型之间的显式转换 是 {.text-success}
F051-06 CURRENT_DATE 否。 {.text-danger} today() 是相似的
F051-07 LOCALTIME 否。 {.text-danger} now() 是相似的
F051-08 LOCALTIMESTAMP 否。 {.text-danger}
F081 联盟和视图除外 部分{.text-warning}
F131 分组操作 部分{.text-warning}
F131-01 WHERE、GROUP BY和HAVING子句在具有分组视图的查询中受支持 是 {.text-success}
F131-02 具有分组视图的查询中支持的多个表 是 {.text-success}
F131-03 设置具有分组视图的查询中支持的函数 是 {.text-success}
F131-04 具有分组依据和具有子句和分组视图的子查询 是 {.text-success}
F131-05 单行选择具有GROUP BY和具有子句和分组视图 非也。 {.text-danger}
F181 多模块支持 否。{.text-danger}
F201 投函数 {.text-success}
F221 显式默认值 否。{.text-danger}
F261 案例表达式 {.text-success}
F261-01 简单案例 是 {.text-success}
F261-02 检索案例 是 {.text-success}
F261-03 NULLIF 是 {.text-success}
F261-04 COALESCE 是 {.text-success}
F311 架构定义语句 部分{.text-warning}
F311-01 CREATE SCHEMA 否。 {.text-danger}
F311-02 为持久基表创建表 是 {.text-success}
F311-03 CREATE VIEW 是 {.text-success}
F311-04 CREATE VIEW: WITH CHECK OPTION 否。 {.text-danger}
F311-05 赠款声明 是 {.text-success}
F471 标量子查询值 {.text-success}
F481 扩展空谓词 {.text-success}
F812 基本标记 否。{.text-danger}
T321 基本的SQL调用例程 否。{.text-danger}
T321-01 无重载的用户定义函数 否。 {.text-danger}
T321-02 无重载的用户定义存储过程 否。 {.text-danger}
T321-03 函数调用 否。 {.text-danger}
T321-04 电话声明 否。 {.text-danger}
T321-05 退货声明 否。 {.text-danger}
T631 在一个列表元素的谓词中 {.text-success}