达梦数据库与MySQL部分语法区别
达梦与MySQL部分语法的区别
前⾔:
达梦数据库管理系统是达梦公司推出的具有完全⾃主知识产权的⾼性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。
DM8采⽤全新的体系架构,在保证⼤型通⽤的基础上,针对可靠性、⾼性能、海量数据处理和安全性做了⼤量的研发和改进⼯作,极⼤提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。
DM_SQL 语⾔符合结构化查询语⾔ SQL 标准,是标准 SQL 的扩充。它集数据定义、数据查询、数据操纵和数据控制于⼀体,是⼀种统⼀的、综合的关系数据库语⾔。 它功能强⼤,使⽤简单⽅便、容易为⽤户掌握。
语法区别
在达梦中需注意:
达梦中有内置参数可进⾏兼容其他数据库的部分使⽤语法
内置达梦数据库参数
COMPATIBLE_MODE=4可兼容MySQL部分语法使⽤
兼容MySQL语法中查询列不在group by表达式
兼容order by排序=ASC时空值在⾸⾏显⽰,在末尾显⽰的参数
1. 创建表的时候,不⽀持在列的后⾯直接加 comment 注释,使⽤ COMMENT ON IS 代替,如:
COMMENT ON TABLE xxx IS xxx
COMMENT ON COLUMN xxx IS xxx
2. 不⽀持 case-when-then-else
例如:
select case when id =2then"aaa"when id =3then"bbb"else"ccc"end as test
from(select id from person) tt;
3. 不⽀持 if。
4. 不⽀持 “”(双引号使⽤),只⽀持’’(单引号使⽤)
数据类型
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());
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,'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. current_timestamp 的返回值带有时区,
例⼦:
select current_timestamp();
2018-12-1714:34:18.433839+08:00
8. convert(type, value) 函数,
与 mysql 的convert⼀样,但是参数是反过来的,mysql 是convert(value,type) 9. 不⽀持 on duplicate key update,
使⽤merge into代替
10. 不⽀持 ignore,达梦使⽤⽅法如下
insert ignore into
12. 不⽀持 replace into,
使⽤merge into代替
12. 不⽀持 auto_increment, 使⽤ identity 代替
如:identity(1,1),从1开始,每次增1
transform和convert的区别13. MySQL中REPEAT(str,count)函数使⽤上有区别在达梦中需要REPEAT(char,n)/REPEATSTR(char,n)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论