doris:MySQL 兼容性

Doris 高度兼容 MySQL 语法,支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方,下面给出了它们的差异点介绍。

数据类型​

数字类型​

类型MySQLDoris
Boolean- 支持
- 范围:0 代表 false,1 代表 true
- 支持
- 关键字:Boolean
- 范围:0 代表 false,1 代表 true
Bit- 支持
- 范围:1 ~ 64
不支持
Tinyint- 支持
- 支持 signed,unsigned
- 范围:signed 的范围是 -128 ~ 127,unsigned 的范围是 0 ~ 255
- 支持
- 只支持 signed
- 范围:-128 ~ 127
Smallint- 支持
- 支持 signed,unsigned
- 范围:signed 的范围是 -2^15 ~ 2^15-1,unsigned 的范围是 0 ~ 2^16-1
- 支持
- 只支持 signed
- 范围:-32768 ~ 32767
Mediumint- 支持
- 支持 signed,unsigned
- 范围:signed 的范围是 -2^23 ~ 2^23-1,unsigned 的范围是 0 ~ -2^24-1
- 不支持
int- 支持
- 支持 signed,unsigned
- 范围:signed 的范围是 -2^31 ~ 2^31-1,unsigned 的范围是 0 ~ -2^32-1
- 支持
- 只支持 signed
- 范围: -2147483648~ 2147483647
Bigint- 支持
- 支持 signed,unsigned
- 范围:signed 的范围是 -2^63 ~ 2^63-1,unsigned 的范围是 0 ~ 2^64-1
- 支持
- 只支持 signed
- 范围: -2^63 ~ 2^63-1
Largeint- 不支持- 支持
- 只支持 signed
- 范围:-2^127 ~ 2^127-1
Decimal- 支持
- 支持 signed,unsigned(8.0.17 以前支持,该版本以上标记为 deprecated)
- 默认值:Decimal(10, 0)
- 支持
- 只支持 signed
- 默认值:Decimal(9, 0)
Float/Double- 支持
- 支持 signed,unsigned(8.0.17 以前支持,该版本以上标记为 deprecated)
- 支持
- 只支持 signed

日期类型​

类型MySQLDoris
Date- 支持
- 范围:['1000-01-01','9999-12-31']
- 格式:YYYY-MM-DD
- 支持
- 范围:['0000-01-01', '9999-12-31']
- 格式:YYYY-MM-DD
DateTime- 支持
- 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
- 不支持

字符串类型​

类型MySQLDoris
Char- 支持
- 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 字节(2G)
Binary- 支持
- 类似于 Char
- 不支持
Varbinary- 支持
- 类似于 Varchar
- 不支持
Blob- 支持
- TinyBlob、Blob、MediumBlob、LongBlob
- 不支持
Text- 支持
- TinyText、Text、MediumText、LongText
- 不支持
Enum- 支持
- 最多支持 65535 个 elements
- 不支持
Set- 支持
- 最多支持 64 个 elements
- 不支持

JSON 数据类型​

类型MySQLDoris
JSON支持支持

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_PERCENT(QUANTILE_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 算法,对数据进行聚合(聚类),并保存聚类后的质心点。

  • Array<T>

    Array 由 T 类型元素组成的数组,不能作为 Key 列使用。

  • MAP<K, V>

    Map 是由 K, V 类型元素组成的映射表,不能作为 Key 列使用。

  • STRUCT<field_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 支持 B+Tree 索引和 Hash 索引。
engine_type- 表引擎类型,可选。
- 目前支持的表引擎主要是 OLAP 原生引擎。
- MySQL 支持的存储引擎有:Innodb,MyISAM 等
keys_type- 数据模型,可选。
- 支持的类型包括:1)DUPLICATE KEY(默认):其后指定的列为排序列。2)AGGREGATE KEY:其后指定的列为维度列。3)UNIQUE KEY:其后指定的列为主键列。
- MySQL 则没有数据模型的概念。
table_comment表注释
partition_info分区算法,可选。
Doris 支持的分区算法,包括:
- LESS THAN:仅定义分区上界。下界由上一个分区的上界决定。
- FIXED RANGE:定义分区的左闭右开区间。
- MULTI RANGE:批量创建 RANGE 分区,定义分区的左闭右开区间,设定时间单位和步长,时间单位支持年、月、日、周和小时。

MySQL 支持的算法:Hash,Range,List Key,并且还支持子分区,子分区支持的算法有 Hash 和 Key。
distribution_desc- 分桶算法,必选,包括:1)Hash 分桶语法:DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num|auto] 说明:使用指定的 key 列进行哈希分桶。2)Random 分桶语法: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 支持的索引算法有:B+Tree,Hash

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)? mvName=multipartIdentifier(LEFT_PAREN cols=simpleColumnDefs RIGHT_PAREN)? buildMode?(REFRESH refreshMethod? refreshTrigger?)?(KEY keys=identifierList)?(COMMENT STRING_LITERAL)?(PARTITION BY LEFT_PAREN partitionKey = identifier RIGHT_PAREN)?(DISTRIBUTED BY (HASH hashKeys=identifierList | 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 condition

Doris 该语法只能在 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode 刷题】贪心算法(4)-区间问题

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法区间问题的相关题目解析。 文章目录 55. 跳跃游戏45. 跳跃游戏 II452. 用最少数量的箭引爆气球435. 无重叠区间763. 划分字母区间56. 合并区间 55. 跳跃游戏 题目链接 class Solution:def canJu…

苹果公司宣布正式开源 Xcode 引擎 Swift Build145

2025 年 2 月 1 日&#xff0c;苹果公司宣布正式开源 Xcode 引擎 Swift Build145。 Swift 是苹果公司于 2014 年推出的一种开源编程语言&#xff0c;用于开发 iOS、iPadOS、macOS、watchOS 和 tvOS 等平台的应用程序。 发展历程 诞生&#xff1a;2014 年&#xff0c;苹果在全球…

PID 算法简介(C语言)

一、简介: PID是比例、积分、微分三个环节的组合,用来进行反馈控制。每个部分都有对应的系数,也就是Kp、Ki、Kd。PID 算法实现这三个部分的计算,然后综合起来得到控制输出。 二、PID控制器结构体: PID控制器结构体:包含PID参数(Kp, Ki, Kd);存储积分项和上一次误差;…

123,【7】 buuctf web [极客大挑战 2019]Secret File

进入靶场 太熟悉了&#xff0c;有种回家的感觉 查看源代码&#xff0c;发现一个紫色文件 点下看看 点secret 信息被隐藏了 要么源代码&#xff0c;要么抓包 源代码没有&#xff0c;抓包 自己点击时只能看到1和3处的文件&#xff0c;点击1后直接跳转3&#xff0c;根本不出…

HTTP协议学习大纲

第一阶段&#xff1a;HTTP基础概念 互联网与Web基础 理解Web工作原理&#xff1a;客户端-服务器模型URL与URI的结构及区别端口、协议、域名概念 HTTP协议概览 HTTP的作用与特点&#xff08;无状态、无连接、可扩展&#xff09;HTTP协议版本演进&#xff08;0.9 → 1.0 → 1.1 …

Formality:时序变换(五)(寄存器复制)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生&#xff0c;它们包括&#xff1a;时钟门控(Clock Gating)、寄存器合并(Register Merging)、…

我使用deepseek高效学习-分析外文网站Cron定时执行任务

最近在spring框架中 设置定时任务&#xff0c;有的末尾是星号有的是问号&#xff0c;有的是6位&#xff0c;有的是7位。就这个机会总结下cron表达式的使用&#xff0c;综合源代码中的crontab地址翻译分析&#xff0c;结合最近超爆的deepseek 提高学习效率&#xff0c;归纳总结出…

BurpSuite抓包与HTTP基础

文章目录 前言一、BurpSuite1.BurpSuite简介2.BurpSuite安装教程(1)BurpSuite安装与激活(2)安装 https 证书 3.BurpSuite使用4.BurpSuite资料 二、图解HTTP1.HTTP基础知识2.HTTP客户端请求消息3.HTTP服务端响应消息4.HTTP部分请求方法理解5.HTTPS与HTTP 总结 前言 在网络安全和…

华为交换机堆叠配置

一、CSS堆叠集群配置&#xff08;框式交换机&#xff09; 1、通过集群卡连接方式组建集群 [SwitchA] set css mode css-card \\配置集群卡连接方式 [SwitchA] set css id 1 \\配置成员交换机的集群ID(缺省值为1) [SwitchA] set css priority 100 \\配…

google 多模态aistudio Stream Realtime体验

参考&#xff1a; https://aistudio.google.com/live 使用gemini多模态能力&#xff0c;支持语音图像文字输入输出&#xff0c;实时交互体验 支持语音实时交互、摄像头加语音、屏幕视频语音 摄像头 屏幕共享

(文末提供数据集下载)ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练

文章目录 (文末提供数据集下载)ML.NET库学习001&#xff1a;基于PCA的信用卡异常检查之样本处理与训练目标项目概述代码结构概述1. **主要类和文件**2. **命名空间和使用指令**3. **数据类 (TransactionObservation)**4. **主程序入口 (Main 方法)**5. **数据预处理 (DataPrepr…

基于GA-BP遗传算法优化神经网络+NSGAII多目标优化算法的工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GA-BP遗传算法优化神经网络NSGAII多目标优化算法&#xff0c;工艺参数优化、工程设计优化&#xff01;&#xff08;Matlab完整源码和数据&#xff09; 多目标优化是指在优化问题中同时考虑多个目标的优化过程。在多…

1、http介绍

一、HTTP 和 HTTPS 简介 HTTP&#xff08;HyperText Transfer Protocol&#xff09; 用途&#xff1a;用于网页数据传输&#xff08;不加密&#xff09;。协议特性&#xff1a;以明文形式传输数据&#xff0c;默认端口 80&#xff0c;无身份验证和完整性保护。典型场景&#xf…

电商行业的新篇章:3D和AR技术助力销售转化率提升!

3D模型在电商行业的应用十分广泛&#xff0c;其影响深远且意义重大。以下是关于3D模型在电商行业应用的具体分析&#xff1a; 一、提升消费者购物体验与决策效率 三维呈现&#xff1a;通过3D技术&#xff0c;商品可以在电商平台上以三维形式呈现&#xff0c;消费者可以720旋转…

书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记

目录 一、阅读背景二、《新能源汽车动力电池安全管理算法设计》脑图笔记三、《动力电池管理系统核心算法》脑图笔记四、后记参考学习 一、阅读背景 如今身处新能源动力电池行业&#xff0c;欲对动力电池相关算法做一些了解&#xff0c;通过查找相关电子书app&#xff0c;最后找…

前端布局与交互实现技巧

前端布局与交互实现技巧 1. 保持盒子在中间位置 在网页设计中&#xff0c;经常需要将某个元素居中显示。以下是一种常见的实现方式&#xff1a; HTML 结构 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><m…

2025年最新版武书连SCD期刊(中国科学引文数据库)来源期刊已更新,可下载PDF版!需要的作者进来了解~

2025年最新版武书连SCD期刊&#xff08;中国科学引文数据库&#xff09;来源期刊已更新&#xff01; 官网是不提供免费查询的。小编给大家两个路径&#xff0c;无需下载PDF&#xff0c;随时随地都能查25版SCD目录。 路径一&#xff1a;中州期刊联盟官网&#xff0c;25版SCD目…

linux 性能60秒分析

linux 60秒分析 需要运行的工具是 1、uptime 2、dmesg | tail 3、vmstat 1 4、mpstat -P ALL 1 5、pidstat 1 6、iostat -xz 1 7、free -m 8、sar -n DEV 1 9、sar -n TCP,ETCP 1 10、topuptime 快速检查平均负载 [rootaaaaaa ~]# uptime15:17:20 up 3 days, 14 min, 7 us…

c++ template-3

第 7 章 按值传递还是按引用传递 从一开始&#xff0c;C就提供了按值传递&#xff08;call-by-value&#xff09;和按引用传递&#xff08;call-by-reference&#xff09;两种参数传递方式&#xff0c;但是具体该怎么选择&#xff0c;有时并不容易确定&#xff1a;通常对复杂类…

unity碰撞的监测和监听

1.创建一个地面 2.去资源商店下载一个火焰素材 3.把procedural fire导入到自己的项目包管理器中 4.给magic fire 0 挂在碰撞组件Rigidbody , Sphere Collider 5.创建脚本test 并挂在magic fire 0 脚本代码 using System.Collections; using System.Collections.Generic; usi…