达梦数据库
国产达梦数据库笔记
数据定义语句
数据定义语句
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)
达梦中没有 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表达式
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: