形象设计公司网站建设方案书,免费门户网站模板,做关于什么内容的网站,wordpress页面镶嵌phpDoris 高度兼容 MySQL 语法#xff0c;支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方#xff0c;下面给出了它们的差异点介绍。
数据类型
数字类型
类型MySQLDorisBoolean- 支持 - 范围#xff1a;0 代表 false#xff0c;1 代表 true- 支持 - 关键字支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方下面给出了它们的差异点介绍。
数据类型
数字类型
类型MySQLDorisBoolean- 支持 - 范围0 代表 false1 代表 true- 支持 - 关键字Boolean - 范围0 代表 false1 代表 trueBit- 支持 - 范围1 ~ 64不支持Tinyint- 支持 - 支持 signed,unsigned - 范围signed 的范围是 -128 ~ 127unsigned 的范围是 0 ~ 255- 支持 - 只支持 signed - 范围-128 ~ 127Smallint- 支持 - 支持 signed,unsigned - 范围signed 的范围是 -2^15 ~ 2^15-1unsigned 的范围是 0 ~ 2^16-1- 支持 - 只支持 signed - 范围-32768 ~ 32767Mediumint- 支持 - 支持 signed,unsigned - 范围signed 的范围是 -2^23 ~ 2^23-1unsigned 的范围是 0 ~ -2^24-1- 不支持int- 支持 - 支持 signed,unsigned - 范围signed 的范围是 -2^31 ~ 2^31-1unsigned 的范围是 0 ~ -2^32-1- 支持 - 只支持 signed - 范围 -2147483648~ 2147483647Bigint- 支持 - 支持 signed,unsigned - 范围signed 的范围是 -2^63 ~ 2^63-1unsigned 的范围是 0 ~ 2^64-1- 支持 - 只支持 signed - 范围 -2^63 ~ 2^63-1Largeint- 不支持- 支持 - 只支持 signed - 范围-2^127 ~ 2^127-1Decimal- 支持 - 支持 signed,unsigned8.0.17 以前支持该版本以上标记为 deprecated - 默认值Decimal(10, 0)- 支持 - 只支持 signed - 默认值Decimal(9, 0)Float/Double- 支持 - 支持 signed,unsigned8.0.17 以前支持该版本以上标记为 deprecated- 支持 - 只支持 signed
日期类型
类型MySQLDorisDate- 支持 - 范围[1000-01-01,9999-12-31] - 格式YYYY-MM-DD- 支持 - 范围[0000-01-01, 9999-12-31] - 格式YYYY-MM-DDDateTime- 支持 - DATETIME([P])可选参数 P 表示精度 - 范围1000-01-01 00:00:00.000000 ,9999-12-31 23:59:59.999999 - 格式YYYY-MM-DD hh:mm .fraction - 支持 - DATETIME([P])可选参数 P 表示精度 - 范围[0000-01-01 00:00:00[.000000], 9999-12-31 23:59:59[.999999]] - 格式YYYY-MM-DD hh:mm .fraction Timestamp- 支持 - Timestamp[(p)]可选参数 P 表示精度 - 范围[1970-01-01 00:00:01.000000 UTC , 2038-01-19 03:14:07.999999 UTC] - 格式YYYY-MM-DD hh:mm .fraction - 不支持Time- 支持 - Time[(p)] - 范围[-838:59:59.000000 to 838:59:59.000000] - 格式hh:mm .fraction - 不支持Year- 支持 - 范围1901 to 2155, or 0000 - 格式yyyy- 不支持
字符串类型
类型MySQLDorisChar- 支持 - CHAR(M)M 为字符长度缺省表示长度为 1 - 定长 - 范围[0,255]字节大小- 支持 - CHAR(M)M 为字节长度 - 可变 - 范围[1,255]Varchar- 支持 - VARCHAR(M)M 为字符长度 - 范围[0,65535]字节大小- 支持 - VARCHAR(M)M 为字节长度。 - 范围[1, 65533]String- 不支持- 支持 - 1048576 字节1MB可调大到 2147483643 字节2GBinary- 支持 - 类似于 Char- 不支持Varbinary- 支持 - 类似于 Varchar- 不支持Blob- 支持 - TinyBlob、Blob、MediumBlob、LongBlob- 不支持Text- 支持 - TinyText、Text、MediumText、LongText- 不支持Enum- 支持 - 最多支持 65535 个 elements- 不支持Set- 支持 - 最多支持 64 个 elements- 不支持
JSON 数据类型
类型MySQLDorisJSON支持支持
Doris 特有的数据类型 HyperLogLog HLL 类型不能作为 Key 列使用。在 Aggregate 模型表中使用时建表时配合的聚合类型为 HLL_UNION。用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制。并且 HLL 列只能通过配套的 HLL_UNION_AGG、HLL_RAW_AGG、HLL_CARDINALITY、HLL_HASH 进行查询或使用。 HLL 是模糊去重在处理大数据量时其性能优于 Count Distinct。HLL 的误差率通常在 1% 左右有时可能会达到 2%。 BITMAP BITMAP 类型不能作为 Key 列使用。在 Aggregate 表中使用时还需配合 BITMAP_UNION 聚合定义。用户无需指定长度和默认值长度会根据数据的聚合程度由系统内部控制。并且BITMAP 列只能通过配套的 BITMAP_UNION_COUNT、BITMAP_UNION、BITMAP_HASH、BITMAP_HASH64 等函数进行查询或使用。 离线场景下使用 BITMAP 可能会影响导入速度在数据量大的情况下其查询速度会慢于 HLL但优于 Count Distinct。注意在实时场景下如果 BITMAP 不使用全局字典而使用了 BITMAP_HASH()可能会导致约千分之一的误差。如果此误差不可接受可以使用 BITMAP_HASH64。 QUANTILE_PERCENTQUANTILE_STATE QUANTILE_STATE 类型不能作为 Key 列使用。在 Aggregate 模型表中使用时建表时配合的聚合类型为 QUANTILE_UNION。用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制。并且 QUANTILE_STATE 列只能通过配套的 QUANTILE_PERCENT、QUANTILE_UNION、TO_QUANTILE_STATE 等函数进行查询或使用。 QUANTILE_STATE 是一种计算分位数近似值的类型在导入时会对相同的 Key不同 Value 进行预聚合当 Value 数量不超过 2048 时会采用明细记录所有数据当 Value 数量大于 2048 时采用 TDigest 算法对数据进行聚合聚类并保存聚类后的质心点。 ArrayT Array 由 T 类型元素组成的数组不能作为 Key 列使用。 MAPK, V Map 是由 K, V 类型元素组成的映射表不能作为 Key 列使用。 STRUCTfield_name:field_type, ... Struct 由多个 Field 组成的结构体也可被理解为多个列的集合。不能作为 Key 使用。 一个 Struct 中的 Field 的名字和数量固定且总是为 Nullable一个 Field 通常由下面部分组成 field_name: Field 的标识符不可重复field_type: Field 的类型 Agg_State AGG_STATE 不能作为 Key 列使用建表时需要同时声明聚合函数的签名。 用户不需要指定长度和默认值。实际存储的数据大小与函数实现有关。 AGG_STATE 只能配合STATE / MERGE / UNION函数组合器使用。
语法区别
DDL
1 CREATE TABLE
Doris 建表语法
CREATE TABLE [IF NOT EXISTS] [database.]table
(column_definition_list[, index_definition_list]
)
[engine_type]
[keys_type]
[table_comment]
[partition_info]
distribution_desc
[rollup_list]
[properties]
[extra_properties]与 MySQL 的不同之处
参数与 MySQL 不同之处column_definition_list- 字段列表定义其基本语法与 MySQL 类似。 - Doris 额外包含一个聚合类型的操作主要支持的数据模型为 Aggregate Key。 - MySQL 允许在字段列表定义后添加 Index 等约束如 Primary Key、Unique Key 等而 Doris 则是通过定义数据模型来实现对这些约束和计算的支持。index_definition_list- 索引列表定义基本语法与 MySQL 类似 - MySQL 支持位图索引、倒排索引和 N-Gram 索引。另外可以通过属性设置布隆过滤器索引。 - MySQL 支持 BTree 索引和 Hash 索引。engine_type- 表引擎类型可选。 - 目前支持的表引擎主要是 OLAP 原生引擎。 - MySQL 支持的存储引擎有InnodbMyISAM 等keys_type- 数据模型可选。 - 支持的类型包括1DUPLICATE KEY默认其后指定的列为排序列。2AGGREGATE KEY其后指定的列为维度列。3UNIQUE KEY其后指定的列为主键列。 - MySQL 则没有数据模型的概念。table_comment表注释partition_info分区算法可选。 Doris 支持的分区算法包括 - LESS THAN仅定义分区上界。下界由上一个分区的上界决定。 - FIXED RANGE定义分区的左闭右开区间。 - MULTI RANGE批量创建 RANGE 分区定义分区的左闭右开区间设定时间单位和步长时间单位支持年、月、日、周和小时。 MySQL 支持的算法HashRangeList Key并且还支持子分区子分区支持的算法有 Hash 和 Key。distribution_desc- 分桶算法必选包括1Hash 分桶语法DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num|auto] 说明使用指定的 key 列进行哈希分桶。2Random 分桶语法DISTRIBUTED BY RANDOM [BUCKETS num|auto] 说明使用随机数进行分桶。 - MySQL 没有分桶算法。rollup_list- 建表的同时可以创建多个同步物化视图。 - 语法rollup_name (col1[, col2, ...]) [DUPLICATE KEY(col1[, col2, ...])][PROPERTIES(key value)] - MySQL 不支持properties表属性与 MySQL 的表属性不一致定义表属性的语法也与 MySQL 不一致
2 CREATE INDEX
CREATE INDEX [IF NOT EXISTS] index_name ON table_name (column [, ...],) [USING BITMAP];目前支持位图索引、倒排索引和 N-Gram 索引布隆过滤器索引单独的语法设置 MySQL 支持的索引算法有BTreeHash
3 CREATE VIEW
CREATE VIEW [IF NOT EXISTS][db_name.]view_name(column1[ COMMENT col comment][, column2, ...])
AS query_stmtCREATE MATERIALIZED VIEW (IF NOT EXISTS)? mvNamemultipartIdentifier(LEFT_PAREN colssimpleColumnDefs RIGHT_PAREN)? buildMode?(REFRESH refreshMethod? refreshTrigger?)?(KEY keysidentifierList)?(COMMENT STRING_LITERAL)?(PARTITION BY LEFT_PAREN partitionKey identifier RIGHT_PAREN)?(DISTRIBUTED BY (HASH hashKeysidentifierList | RANDOM) (BUCKETS (INTEGER_VALUE | AUTO))?)?propertyClause?AS query基本语法与 MySQL 一致Doris 除了支持逻辑视图外还支持两种物化视图同步物化视图和异步物化视图MySQL 不支持物化视图
4 ALTER TABLE / ALTER INDEX
Doris Alter 的语法与 MySQL 的基本一致。
DROP TABLE / DROP INDEX
Doris Drop 的语法与 MySQL 的基本一致
DML
1 INSERT
INSERT INTO table_name[ PARTITION (p1, ...) ][ WITH LABEL label][ (column [, ...]) ][ [ hint [, ...] ] ]{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }Doris Insert 语法与 MySQL 的基本一致。
2 UPDATE
UPDATE target_table [table_alias]SET assignment_listWHERE conditionassignment_list:assignment [, assignment] ...assignment:col_name valuevalue:{expr | DEFAULT}Doris Update 语法与 MySQL 基本一致但需要注意的是必须加上 WHERE 条件。
3 DELETE
DELETE FROM table_name [table_alias] [PARTITION partition_name | PARTITIONS (partition_name [, partition_name])]WHERE column_name op { value | value_list } [ AND column_name op { value | value_list } ...];Doris 该语法只能指定过滤谓词
DELETE FROM table_name [table_alias][PARTITION partition_name | PARTITIONS (partition_name [, partition_name])][USING additional_tables]WHERE conditionDoris 该语法只能在 Unique Key 模型表上使用。
Doris Delete 语法与 MySQL 基本一致。但是由于 Doris 是一个分析数据库所以删除不能过于频繁。
4 SELECT
SELECT[hint_statement, ...][ALL | DISTINCT]select_expr [, select_expr ...][EXCEPT ( col_name1 [, col_name2, col_name3, ...] )][FROM table_references[PARTITION partition_list][TABLET tabletid_list][TABLESAMPLE sample_value [ROWS | PERCENT][REPEATABLE pos_seek]][WHERE where_condition][GROUP BY [GROUPING SETS | ROLLUP | CUBE] {col_name | expr | position}][HAVING where_condition][ORDER BY {col_name | expr | position} [ASC | DESC], ...][LIMIT {[offset_count,] row_count | row_count OFFSET offset_count}][INTO OUTFILE file_name]Doris Select 语法与 MySQL 基本一致
SQL Function
Doris Function 基本覆盖绝大部分 MySQL Function。