国产达梦数据库与MySQL的区别
背景
由于项⽬上的需要,把项⽬实现国产化,把底层的MySQL数据库替换为国产的达梦数据库,花了⼀周的时间研究了国产的数据库-达梦数据库,它和MySQL有⼀定的区别,SQL的写法也有⼀些区别。
介绍
以下介绍来⾃于,相关的⽂档在官⽹中也是可以下载的。
达梦数据库管理系统是达梦公司推出的具有完全⾃主知识产权的⾼性能数据库管理系统,简称DM,它具有如下特点:
1、通⽤性
达梦数据库管理系统兼容多种硬件体系,可运⾏于X86、X64、SPARC、POWER等硬件体系之上。DM各种平台上的数据存储结构和消息通信结构完全⼀致,使得DM各种组件在不同的硬件平台上具有⼀致的使⽤特性。
达梦数据库管理系统产品实现了平台⽆关性,⽀持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、Kylin、AIX、Solaris等各种主流操作系统。达梦数据库的服务器、接⼝程序和管理⼯具均可在32位/64 位版本操作系统上使⽤。
2、⾼性能
⽀持列存储、数据压缩、物化视图等⾯向联机事务分析场景的优化选项;
通过表级⾏存储、列存储选项技术,在同⼀产品中提供对联机事务处理和联机分析处理业务场景的⽀持;
3、⾼可⽤
可配置数据守护系统(主备),⾃动快速故障恢复,具有强⼤的容灾处理能⼒。
4、跨平台
跨平台,⽀持主流软硬件体系(⽀持windows、Linux、中标麒麟、银河麒麟等操作系统),⽀持主流标准接⼝。
5、⾼可扩展
⽀持拓展软件包和多种⼯具,实现海量数据分析处理、数据共享集(DSC)和⽆共享数据库集(MPP)等扩展功能
与MySQL的区别
1. 创建表的时候,不⽀持在列的后⾯直接加 comment 注释,使⽤COMMENT ON  IS 代替,如:
COMMENT ON TABLE xxx IS xxx
COMMENT ON COLUMN xxx IS xxx
2. 不⽀持 date_sub 函数,使⽤ dateadd(datepart,n,date) 代替,
其中,datepart可以为:
year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh),        minute(mi,n),second(ss,s), millisecond(ms)
例⼦:
select dateadd(month, -6, now());
select dateadd(month, 2, now());
3. 不⽀持 date_format 函数,它有三种代替⽅法:
a:  使⽤datepart代替:语法:datepart(datepart, date),返回代表⽇期的指定部分的整数,
mysql下载add producedatepart可以为:
year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh),
minute(mi,n),second(ss,s), millisecond(ms)
例⼦:
select datepart(year, '2018-12-13 08:45:00'); --2018
select datepart(month, '2018-12-13 08:45:00'); --12
b: 使⽤date_part 代替,功能和 datepart ⼀样,写法不同,参数顺序颠倒,且都要加引号,
例⼦:
select date_part('2018-12-13 08:45:00', 'year');--2018
select date_part('2018-12-13 08:45:00', 'mm'); -- 12
c:  使⽤extract 代替,语法:extract(dtfield from date),从⽇期类型date中抽取dtfield对应的值
dtfield 可以是 year,month,day,hour,minute,second
例⼦:
select extract(year from  '2018-12-13 08:45:00'); --2018
select extract(month from  '2018-12-13 08:45:00'); --12
4.  不⽀持 substring_index 函数,使⽤substr / substring代替,
语法:
substr(char[,m[,n]])
substring(char[from m[ for n]])
5. 不⽀持 group_concat 函数,使⽤wm_concat代替,
例⼦:
select wm_concat(id) as idstr from persion ORDER BY id ;
6. 不⽀持 from_unixtime 函数,使⽤round 代替
语法:round(date[,format])
7. 不⽀持 case-when-then-else ,
例如:
select case  when id = 2 then "aaa" when id = 3 then "bbb" else "ccc" end as test
from (select id from person) tt;
8. current_timestamp 的返回值带有时区,
例⼦:
select current_timestamp();
2018-12-17 14:34:18.433839 +08:00
9. convert(type, value) 函数,
与 mysql 的 convert ⼀样,但是参数是反过来的,mysql 是 convert(value, type)
10.  不⽀持 on duplicate key update,
使⽤merge into 代替
11. 不⽀持 ignore,即 insert ignore  into
12. 不⽀持 replace into,
使⽤ merge into 代替
13. 不⽀持 if。
14.  不⽀持 "",只⽀持''
15. 不⽀持 auto_increment,使⽤identity代替
如: identity(1, 1),从 1 开始,每次增 1
16. 不⽀持 longtext 类型,
可⽤CLOB 代替。
总结
达梦数据库和 oracle 数据库⽐较像,如果不到和 MySQL 对应的函数,可以看下 oracle 的相关函数。它的使⽤⽂档可以在官⽹下载到。
PS:本⽂⾸发于个⼈ “Java 技术⼤杂烩”,欢迎关注。
转载于:my.oschina/mengyuankan/blog/3054270

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。