12.6. 达梦数据库

12.6.1. 登录

/opt/dmdbms/bin/disql
disql V8
username:SYSDBA
password:

Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 3.298(ms)
SQL>

12.6.2. 创建表空间

创建表空间 TEST, 指定数据库文件为 ‘/data/dmdata/DAMENG/TEST.DBF’, 初始大小为 128M,打开自动扩展,每次自动扩展 100M ,扩展上限 10240M, 使用 RC4 加密算法。 使用命令行方式创建示例表空间如下:

SQL> create tablespace "CTBP" datafile '/opt/dmdbms/data/DAMENG/CTBP.DBF' size 128 autoextend on next 100 maxsize 10240 CACHE = NORMAL encrypt with RC4;
executed successfully
used time: 00:00:05.711. Execute id is 64601.

12.6.3. 创建用户

使用命令行方式创建用户 TEST ,密码 “Dameng@123”,使用散列算法 SHA512 ,使用存储加密密钥为 “123456”, 指定表空间为 TEST,索引表空间为 TEST,授予 “PUBLIC” 和 “SOI” 权限。示例参考如下:

create user "TEST" identified by "Dameng@123" hash with SHA512 salt
encrypt by "123456"
default tablespace "CTBP"
default index tablespace "CTBP";

grant "PUBLIC","SOI" to "TEST";

-- 授予用户 DBA 权限
grant "DBA" to "TEST";
grant "RESOURCE" to "TEST";

12.6.4. 用户与模式的关系

每个用户有一个默认的同名的模式,访问自己模式下的表、视图等,不需要加模式名,访问其他模式下的对象需要拥有访问权限,访问时还需加上模式名。

查询当前用户模式下的表,无需加对象名

select * from test

查询其他用户模式下的表,需要加对象名

select * from DBTEST.TABLE_TEST;

12.6.5. 创建数据库对象

参考:https://eco.dameng.com/document/dm/zh-cn/start/dm-create-objects.html

CREATE TABLE dmhr.city
(
city_id CHAR(3) NOT NULL,
city_name VARCHAR(40) NULL,
region_id INT NULL
);

12.6.6. 插入数据

INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('BJ','北京',1);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('SJZ','石家庄',1);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('SH','上海',2);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('NJ','南京',2);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('GZ','广州',3);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('HK','海口',3);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('WH','武汉',4);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('CS','长沙',4);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('SY','沈阳',5);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('XA','西安',6);
INSERT INTO dmhr.city(city_id,city_name,region_id) VALUES('CD','成都',7);

12.6.7. Java

参考:https://eco.dameng.com/document/dm/zh-cn/pm/jdbc-rogramming-guide.html

<!--添加数据库驱动安装包-->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>Dm8JdbcDriver18</artifactId>
    <version>8.1.1.193</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/libraries/DmJdbcDriver18-8.1.1.193.jar</systemPath>
</dependency>

备注

可以在本地的安装目录 dmdbms8/drivers/jdbc 下找到对应的驱动包 DmJdbcDriver18.jar,复制到项目的lib目录,再加入到maven依赖中。 此处也可参照官方 jdbc 驱动手册 readme.txt 中的说明。readme.txt 存放在数据库安装目录下的 /drivers/ jdbc 目录下。

在 application.properties 配置连接信息如下:

# 数据库的连接配置
spring.datasource.url=jdbc:dm://localhost:5236?schema=xxx
spring.datasource.username=SYSDBA
spring.datasource.password=SYSDBA
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver

小技巧

jdbc url中使用schema可以指定登录用户使用的模式,如果不指定则使用用户的默认模式。

测试代码

package com.dm.dmspringbootdemo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DbController {

    /**
    * 注入 jdbcTemplate 模板对象
    */
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/queryDbVersion")
    public List queryDbVersion() {
        return jdbcTemplate.queryForList(
            "SELECT banner as 版本信息 FROM v$version");
    }
}