达梦数据库与MySQL部分语法区别

达梦与MySQL部分语法的区别

前言:
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。
DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。

DM_SQL 语言符合结构化查询语言 SQL 标准,是标准 SQL 的扩充。它集数据定义、数据查询、数据操纵和数据控制于一体,是一种统一的、综合的关系数据库语言。 它功能强大,使用简单方便、容易为用户掌握。

语法区别

在达梦中需注意:
达梦中有内置参数可进行兼容其他数据库的部分使用语法

内置达梦数据库参数
COMPATIBLE_MODE=4   可兼容MySQL部分语法使用

兼容MySQL语法中查询列不在group by表达式
兼容MySQL语法中
兼容order by排序=ASC时空值在首行显示,在末尾显示的参数

在这里插入图片描述

  1. 创建表的时候,不支持在列的后面直接加 comment 注释,使用 COMMENT ON IS 代替,如:
 COMMENT ON TABLE xxx IS xxx
 COMMENT ON COLUMN xxx IS xxx
  1. 不支持 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;
  1. 不支持 if。

  2. 不支持 “”(双引号使用),只支持’’(单引号使用)

数据类型

1.不支持 longtext、TINYBLOB、MEDIUMBLOB、LONGBLOB类型,

可用 CLOB 代替

函数概括

  1. 不支持 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());    
  1. 不支持 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, '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
  1. 不支持 substring_index 函数, 使用 substr / substring 代替,
语法:
substr(char[,m[,n]])
substring(char[from m[ for n]]) 
  1. 不支持 group_concat 函数,使用 wm_concat 代替,
例子:select wm_concat(id) as idstr from persion ORDER BY id ;
  1. 不支持 from_unixtime 函数,使用 round 代替
  语法:round(date[,format])
  1. current_timestamp 的返回值带有时区,
例子:
 select current_timestamp();
 2018-12-17 14:34:18.433839 +08:00
  1. convert(type, value) 函数,
 与 mysql 的 convert 一样,但是参数是反过来的,mysql 是 convert(value, type)
  1. 不支持 on duplicate key update,
 使用 merge into 代替 
  1. 不支持 ignore,达梦使用方法如下
 insert ignore  into 
  1. 不支持 replace into,
  使用 merge into 代替 
  1. 不支持 auto_increment, 使用 identity 代替
  如: identity(1, 1),从 1 开始,每次增 1 
  1. MySQL中REPEAT(str,count)函数使用上有区别在达梦中需要
REPEAT(char,n) /REPEATSTR(char,n)

达梦技术社区地址 https://eco.dameng.com

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值