当前位置 : 首页 » 文章分类 :  开发  »  达梦数据库

达梦数据库

国产达梦数据库笔记


数据定义语句

数据定义语句
https://eco.dameng.com/docs/zh-cn/pm/definition-statement.html

ALL_TABLES 查询所有表

-- 查询表
SELECT * FROM ALL_TABLES;

TABLEDEF 查询表定义

--查看表定义,入参:模式名,表名
SELECT TABLEDEF('SYSDBA','t_table1');

查看主键

--查看主键
SELECT * FROM ALL_CONSTRAINTS where CONSTRAINT_type='P';

查看索引

-- 查索引
select * from dba_indexes where table_name='t_table1';

AUTO_INCREMENT 自增改为 IDENTITY(1,1)

https://eco.dameng.com/document/dm/zh-cn/pm/insertion-deletion-modification#5.6.1%20DM%20%E8%87%AA%E5%A2%9E%E5%88%97%E5%AE%9A%E4%B9%89

达梦中没有 AUTO_INCREMENT 语句,自增列用 IDENTITY(seed,incre) 定义,即 IDENTITY(种子, 增量), 例如 IDENTITY(1,1)
种子:装载到表中的第一个行所使用的值;
增量:增量值,该值被添加到前一个已装载的行的标识值上。增量值可以为正数或负数,但不能为 0。

例如

create table t_table1(
  id int identity,
  name varchar(20)
);

1、IDENTITY 适用于 int(-2147483648~+2147483647)、bigint(-2^63~+2^63-2)类型的列;每个表只能创建一个自增列;
2、不能对自增列使用 DEFAULT 约束;
3、必须同时指定种子和增量值,或者二者都不指定。如果二者都未指定,则取默认值(1,1);若种子或增量为小数类型,报错;
4、最大值和最小值为该列的数据类型的边界;
5、建表种子和增量大于最大值或者种子和增量小于最小值时报错;
6、自增列一旦生成,无法更新,不允许用 Update 语句进行修改;
7、临时表、列存储表、水平分区表、垂直分区表不支持使用自增列。


数据查询语句

数据查询语句
https://eco.dameng.com/docs/zh-cn/pm/check-phrases.html

regexp 操作符由 regexp_like 函数代替

达梦不支持 regexp 操作符,如果用 regexp 模糊匹配的 sql 会报错
达梦中有个 regexp_like 函数,但语法和 regexp 不同

select *
from table1
where regexp_like(name,'1232');

group by 中不能使用列别名(mysql中可以)

select FROM_UNIXTIME(SUBSTRING(timestamp,1,10),'%Y-%m-%d %H:%i') as times, count(*)
from user
group by times

报错:
第3 行附近出现错误[-2111]:
无效的列名[times]

原因:
Oracle/标准SQL/达梦数据库中,group by中不能使用列别名,MySQL中可以是因为做了加强处理


达梦数据库关键字和保留字

附录 1 关键字和保留字
https://eco.dameng.com/docs/zh-cn/pm/sql-appendix.html


字段名和保留字冲突解决方法

方法一:双引号法
sql 中在和保留字冲突的表名、字段名上加双引号(类似 MySQL 中的反引号)。

方法二:dm.ini 中屏蔽保留字
在 dm.ini 中有个参数 EXCLUDE_RESERVED_WORDS,这个参数可以用来屏蔽保留字,将需要屏蔽的保留字写在 = 号后面,然后以逗号分隔。


DataGrip 连接达梦数据库

1、打开 DataGrip, 点左上角加号 + 新建 Driver
Name: 输入 DaMengDriver
Driver Files: 点加号 + ,选择 Custom JARs,选择 /Users/xx/.m2/repository/com/dameng/Dm8JdbcDriver18/8.1.1.49/Dm8JdbcDriver18-8.1.1.49.jar 这个驱动 jar 是 SpringBoot 项目中引入达梦依赖后自动下载到 .m2 目录的。
选完 Driver Files 后,class 中可以选择 dm.jdbc.driver.DmDriver

2、使用刚才新建的 DaMengDriver 连接达梦数据库即可。
设置在 dm.ini 中的好处就是一旦设置,永久生效而且对所有客户端都有效,这样就不需要在所有客户端系统中进行专门配置。但是设置在 dm.ini 中之后,这个保留字就永久性失效了,哪怕你想通过 Manager 客户端工具在本地连接也没用了。而且该方式还存在一个隐患就是由于屏蔽掉了一些系统的保留字,所以可能会导致系统的一些功能无法正常使用。


SpringBoot 连接达梦数据库

1、添加依赖

<dependency>
 <groupId>com.dameng</groupId>
 <artifactId>Dm8JdbcDriver18</artifactId>
 <version>8.1.1.49</version>
</dependency>

2、连接参数

spring:
  datasource:
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://localhost:5236?characterEncoding=UTF-8&autoReconnect=true&useSSL=false
    username: test
    password: test

上一篇 Windows

下一篇 Spring-SpEL表达式

阅读
评论
1.1k
阅读预计4分钟
创建日期 2021-11-02
修改日期 2022-02-05
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论