一、达梦入门技术文档
新手直接看达梦入门技术文档即可
二、达梦数据库
1、介绍
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:通用性、高性能、高可用、跨平台、高可扩展
2、与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),返回代表日期的指定部分的整数,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 datepart(year, '2023-04-13 08:45:00'); --2023
select datepart(month, '2022-12-13 08:45:00'); --12
B: 使用 date_part 代替,功能和 datepart 一样,写法不同,参数顺序颠倒,且都要加引号,例子:
select date_part('2023-12-13 08:45:00', 'year');--2023
select date_part('2022-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 '2023-12-13 08:45:00'); --2023
select extract(month from '2022-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();
2023-04-37 14:34:18.433839 +08:00
3、数据迁移
三、JAVA项目连接DM数据库
1、引入依赖
<dependency>
<groupId>com.dameng</groupId>
<artifactId>Dm8JdbcDriver18</artifactId>
<version>8.1.1.49</version>
</dependency>
2、Nacos中配置
四、MySQL转达梦sql注意事项
1、``不可以用
`type` 需要去掉``
2、达梦数据库错误代码-4080:不是 GROUP BY 表达式
1、GROUP BY 和 ORDER BY 一起使用时,ORDER BY 要在 GROUP BY 的后面。
2、GROUP BY 后面必须有 ORDER BY 的字段。
3、在 select 需要查询的语句中选中的字段,必须出现在 GROUP BY 子句中
3、达梦数据库报错「-2106」:无效的表或视图名
1、确认程序连接达梦的用户名,确认该用户是否有select这张表的权限;
2、检查这张表的所属模式,如果模式名与用户名相同,可以用select * from 表名;如果模式名与用户名不同,需要使用 select * from 模式名.表名; 的语法。
3、nacos中url使用schema指定模式:
注意:模式不可以使用-连字符,最好使用下划线