一、安装部署
1.技术文档:
达梦官网文档:快速上手 | 达梦技术文档
2.安装部署
官网下载安装包安装,安装后自动安装视图化操作工具。
3.DM数据库特性
3.1 每个业务创建一个实例
参考:mysql 和 达梦 数据类型区别 达梦数据库是什么类型_mob6454cc6a68aa的技术博客_51CTO博客
3.2 DM 数据库基本逻辑:
模式:一个用户可以拥有多个模式,一个模式只能属于一个用户
表空间:DM数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中
用户:创建用户时,会默认创建一个同名的模式
在进行应用开发时建议创建单独的用户和表空间,为保障数据安全,禁止使用管理员用户 SYSDBA 作为应用系统的数据库用户。
因此,需要每个业务创建一个实例,单独创建表空间,创建用户(自动创建同名的模式)。业务相关的数据表格建立在新建的模式下。
程序中连接数据库时,根据端口号连接不同的数据库,账号密码使用自己创建用户的账号密码,这样操作数据库语句就无需增加模式名,可直接操作表名。
二、创建数据库
1.创建数据库实例
1. 使用数据库配置助手;
2.前两步默认下一步,“数据库标识”页面自定义数据库名、实例名、端口号;
3. 之后默认下一步,“初始化参数”页面。
字符集根据需要设置。
字符串大小写敏感根据需要选择。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。(选择大小写不敏感,之前的程序可兼容,否则标识符需要用””括起)
实例创建后参数不可更改。
4. 口令管理可输入登录密码;
5. 其他默认,点击完成;
三、创建表空间
1. 打开DM管理工具,建立连接。
2. 创建表空间
3. 创建后表空间中会增加对应表空间
四、创建用户
1、创建用户,用户-管理用户,右击创建用户。选择用户的表空间。
2、分配角色
3、分配权限
4、其他默认点击确定,用户列表中会增加新建用户
5、模式下会创建一个同名的模式
四、创建表
1、可以使用DM管理工具创建表格
使用工具中的“转换试图方式”工具,可以更方便查看不同模式下的表格。
2、语句创建
-- 创建表
CREATE TABLE "模式名"."表名称"(
<字段名> INT PRIMARY KEY,
<字段名> VARCHAR(15) NOT NULL,
<字段名> INT,
<字段名> INT
) storage(on "表空间");
例子:
DROP TABLE IF EXISTS "test";
CREATE TABLE "SYSDBA"."test"
(
"id" BIGINT IDENTITY(100, 1) NOT NULL,
"parent_id" BIGINT DEFAULT 0,
"order_num" INT DEFAULT 0,
"status" CHAR(1) DEFAULT '0',
"create_by" VARCHAR(64) DEFAULT '',
"create_time" DATETIME(6),
"update_by" VARCHAR(64) DEFAULT '',
"update_time" DATETIME(6),
NOT CLUSTER PRIMARY KEY("id") USING INDEX TABLESPACE "v****e" ) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "SYSDBA"."test" IS '测试表';
COMMENT ON COLUMN "SYSDBA"."name"."dept_id" IS '测试名称';
注意点:
- DM中使用””括住表名、字段名;
- 创建表时注意选择表空间;
- BIGINT,INT,SMALLINT,DOUBLE后面不带数字;
- mysql中的longblob, 对应DM数据库中的blob;
- 外键可以先建好表格后,通过DM管理工具中右击修改,管理外键;
- 如果列中数据包含单引号’,使用单引号’转义;
- 自增列insert时无法插入具体数据,会自增。如果需要从特定的某个主键值开始,则使用以下语句:
-- 开启自动列可插入
SET IDENTITY_INSERT "模式"."表名" ON WITH REPLACE NULL;
-- 插入数据,数据列名称必须写
insert into "模式"."表名"("id", "name")
VALUES (100,'aa');
-- 关闭自动列可插入
SET IDENTITY_INSERT "模式"."表名" OFF;
- insert执行后,必须使用commit提交才能生效;
- 建表时需要选择对应的模式,对应的用户才能够访问到。如果需要迁移到另一个模式下,使用DTS数据迁移工具;(迁移时注意选择大小写不敏感)
- find_in_set 函数,2022年10月以后的dm8版本已经支持了该函数;