注册
达梦数据库开发入门温馨提示篇
专栏/培训园地/ 文章详情 /

达梦数据库开发入门温馨提示篇

饮水思源 2023/12/22 3091 0 0
摘要

一、排序null空值始终排在前边

原因:DM有一个参数ORDER_BY_NULLS_FLAG,默认值是0,0的话就是null始终在最前边,不管正序倒序。
解决思路:改变参数ORDER_BY_NULLS_FLAG的值:
0 表示 NULL 值始终在最前面返回;
1 表示ASC 升序排序时 NULL 值在最后返回,DESC 降序排序时 NULL 值在最前面返回,在参数等于 1的情况下,NULL 值的返回与 ORACLE 保持一致;
2 表示 ASC 升序排序时 NULL 值在最前面返回,DESC 降序排序时 NULL 值在最后返回,在参数等于 2 的情况下,NULL 值的返回与MYSQL 保持一致

二、DM工具使用

1、使用DM管理工具连接数据库,每次关闭工具或重启电脑后,连接信息会全部消失,原因:DM连接分为注册连接和新建连接。新建连接接近于临时连接,关闭或重启,连接信息就会被清理,只有使用注册连接,DM工具才会将连接信息保存。
image20231220154336312.png
2、编写sql语句时,DM管理工具不像Navicat Premium工具一样自动联想出表名和字段名,解决方式:

① 点击dm管理工具顶部的窗口——>点击选项
2.png
image-20231220154552888

② "查询分析器"——> "编辑器" ——>“SQL助手" ——>勾选 "启用SQL输入助手 "
3.png
image-20231220154635985

三、 Mysql和Oracle向国产数据库(用的达梦)做数据迁移

1、DM不支持if语法,需要用case when 条件判断语句去做替换;
2、DM不支持date_add函数,需要用对应的add_days、add_months等函数做替换;
3、datediff函数在使用中需要增加一个参数’day’,例如:datediff(day,t.gurt_end_date,‘20230921’)
4、DM不支持date_farmat函数

四、JDBC连接

1.无效的表名或视图

原因: JDBC需要指定数据库名(人家叫访问模式)
解决方法:

 String url="jdbc:dm://192.168.15.35:5236?schema=TEST2";

//使用schema指定当前模式名

2.Mybatis-plus批量保存报错

image.png

3.迁移

image.png
如果使用阿里Durid连接池,需要配置DriverClassName,否则会报错

解决办法:

1.升级阿里数据源版本

2.增加driverClassName 配置
image.png
去掉SQL统计

<property name="connectionProperties" value="druid.stat.mergeSql=false" />

达梦依赖库
在安装包/driver/目录下找相应的JAR包即可

五、字母大小写、单引号、双引号

初始化达梦数据库的时候,默认勾选了“字符串比较大小写敏感”,建表的时候,如果表名或列名使用小写字母,那么今后书写SQL语句的时候就要麻烦很多了,必须严格区分单引号、双引号的使用。字符串常量应使用单引号括起,关键字、对象名、字段名、别名等则使用双引号括起。
image.png
  而且,在大小敏感的数据库下,使用dexp导出数据库、模式正常,但导出小写字母创建的表时,可能会提示“表不存在或者为系统内部对象,请核对后再进行输入”。

六、存在集函数

原因:项目里有这样一个SQL
select 字段1,2,3...,
(select last_price from trading where trade_date = MIN(t.trade_date)) as price
from trading t where 条件1,2,3...
group by CONCAT(YEAR(t.trade_date), WEEK(t.trade_date))
要查询每周第一天的last_price,执行时报"存在集函数"的错,原来是在where条件里使用了MIN()函数,DM不允许这样使用,原因不明,如有错误欢迎指正。
解决思路:将MIN()函数改成了一个子查询,虽然比以前复杂了很多,查的也慢了,但是好在能执行了。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服