达梦数据库相关SQL及适配Mysql配置总结

🍓 简介:java系列技术分享(👉持续更新中...🔥)

🍓 初衷:一起学习、一起进步、坚持不懈

🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏

🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击

文章目录

  • 一、什么是达梦数据库?
  • 二、数据库连接
    • [2.1 windows中登录](#2.1 windows中登录)
    • [2.2 Linux中登录](#2.2 Linux中登录)
    • [2.3 使用DataGrip进行连接](#2.3 使用DataGrip进行连接)
  • 三、兼容Mysql
    • [3.1 windows版本兼容](#3.1 windows版本兼容)
    • [3.2 linux版本兼容](#3.2 linux版本兼容)
  • 四、SQL使用
    • 模式相关
      • [1. 查询所有模式](#1. 查询所有模式)
      • [2. 创建模式](#2. 创建模式)
      • [3. 删除模式](#3. 删除模式)
      • [4. 指定模式](#4. 指定模式)
    • 表相关
      • [1. 查询当前用户所有表](#1. 查询当前用户所有表)
      • [2. 创建表](#2. 创建表)
      • [3. 重命名表名](#3. 重命名表名)
      • [4. 增加表注释](#4. 增加表注释)
      • [5. 查看表主键外键](#5. 查看表主键外键)
      • [6. 表字段增加](#6. 表字段增加)
      • [7. 表字段删除](#7. 表字段删除)
      • [8. 查询表注释](#8. 查询表注释)
      • [9. 查询列注释](#9. 查询列注释)
      • [10 . 增加列注释](#10 . 增加列注释)
    • 其他
      • [1. 查询当前用户](#1. 查询当前用户)
      • [2. 查询数据库版本](#2. 查询数据库版本)
      • [3. 查看达梦数据库当前状态](#3. 查看达梦数据库当前状态)
      • [4. 查询数据库有哪些用户](#4. 查询数据库有哪些用户)
  • 五、SpringBoot集成
    • [5.1 添加依赖](#5.1 添加依赖)
    • [5.2 yml配置](#5.2 yml配置)
  • 六、语法适配
    • [5.1 单双引号(重点)](#5.1 单双引号(重点))

一、什么是达梦数据库?

达梦官网:https://www.dameng.com/
达梦技术文档:https://eco.dameng.com/document/dm/zh-cn/pm/logical-structure.html

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称 DM

达梦数据库是一款中国自主研发的专业数据库系统,是适用于企业级应用的高可靠性、高性能、高可扩展性的数据库管理系统。在国内先后应用于金融、电信、政府、医疗、制造等领域,并在海外市场也逐渐得到了认可和应用。

DM的Schema类似MYSQL中的Database概念

DM数据库的安装方式网上有很多(Windows和Linux),这里只对使用情况进行记录

二、数据库连接

2.1 windows中登录

windows中安装可查看该文档:安装文档来源于网络

  1. 首先查看服务是否启动

    或者从开始位置查找

  2. 查看服务是否正常启动`

  1. 通过DM连接自带的管理工具进行使用

2.2 Linux中登录

首先找到达梦安装的bin目录下

需要注意:---通过disql执行该命令后,回车不会停止输入,需要输入/符号来终止

用户名密码等信息自行修改

shell 复制代码
 ./disql SYSDBA/SYSDBA@localhost:5236

2.3 使用DataGrip进行连接

  1. 因为DataGrip中没有达梦的驱动首先要下载驱动

    驱动下载地址:https://eco.dameng.com/download/

将驱动移动到安装目录,或者不会删除的目录中

在DataGrip中添加驱动


配置模板

shell 复制代码
jdbc:dm://{host::localhost}?[:{port::5236}][/DataBaseName?schema={database}]

进行保存,然后选择该驱动进行连接

成功

三、兼容Mysql

3.1 windows版本兼容

选中数据库实例,找到COMPATIBLE_MODE属性:

对于该属性的说明:是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准,2:兼容ORACLE,3:兼容MS SQL SERVER,4:兼容MYSQL;我们将其设置成4,变成兼容MySQL模式,保存后重启实例。


重启实例


3.2 linux版本兼容

达梦DM8数据库可以通过修改实例的配置文件dm.ini中的参数COMPATIBLE_MODE用来兼容不同的数据库,此参数为静态参数,修改后只有重启数据库服务才能生效。

通常情况下,dm.ini在data目录中


将COMPATIBLE_MODE参数修改为4

对于该属性的说明:是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准,2:兼容ORACLE,3:兼容MS SQL SERVER,4:兼容MYSQL;我们将其设置成4,变成兼容MySQL模式,保存后重启实例。

  1. 重启dm服务
    在bin目录下
sql 复制代码
./DmServiceDMSERVER restart
  1. 查询COMPATIBLE_MODE状态---4为兼容Mysql
sql 复制代码
SELECT para_name,para_type,para_value FROM V$DM_INI WHERE PARA_NAME ='COMPATIBLE_MODE';

四、SQL使用

DM的Schema类似MYSQL中的Database概念

需要注意:---通过disql执行该命令后,回车不会停止输入,需要输入/符号来终止

模式相关

1. 查询所有模式

sql 复制代码
select distinct owner from dba_objects;

2. 创建模式

sql 复制代码
create schema TEST AUTHORIZATION SYSDBA;

3. 删除模式

sql 复制代码
drop schema TEST ;

4. 指定模式

sql 复制代码
SET SCHEMA TEST;

表相关

1. 查询当前用户所有表

sql 复制代码
select table_name,tablespace_name from user_tables;

2. 创建表

sql 复制代码
-- 创建employee表
CREATE TABLE employee
(
  employee_id INTEGER,
  employee_name VARCHAR2(20) NOT NULL,
  hire_date DATE,
  salary INTEGER,
  department_id INTEGER NOT NULL
);
-- 使用 CREATE TABLE 语句创建 department 表
CREATE TABLE department
(
  department_id INTEGER PRIMARY KEY,
  department_name VARCHAR(30) NOT NULL
);
-- 非空约束
ALTER TABLE employee MODIFY( hire_date not null);
-- 主键约束
ALTER TABLE employee ADD constraint pk_empid PRIMARY KEY(employee_id);
-- 外键约束
ALTER TABLE employee ADD constraint fk_dept FOREIGN KEY (department_id) REFERENCES department (department_id);

3. 重命名表名

sql 复制代码
alter table tests rename to test_rename;

4. 增加表注释

sql 复制代码
comment on table test_rename is 'AAAAAAA';

5. 查看表主键外键

sql 复制代码
SELECT table_name, constraint_name, constraint_type FROM all_constraints WHERE owner='DM' AND table_name='EMPLOYEE';

6. 表字段增加

sql 复制代码
ALTER TABLE "DM"."EMPLOYEE" add "IS_REPEAT" VARCHAR(255);
COMMENT ON COLUMN "DM"."EMPLOYEE"."IS_REPEAT" IS '是否重复,1、是,0、否';

7. 表字段删除

sql 复制代码
ALTER TABLE "DM"."EMPLOYEE" DROP COLUMN IS_REPEAT;

8. 查询表注释

sql 复制代码
select comments from user_tab_comments where table_name = 'table1';

9. 查询列注释

sql 复制代码
select * from user_col_comments where table_name = 'table1';

10 . 增加列注释

sql 复制代码
comment on column test_rename.id is 'Primary'; 

其他

1. 查询当前用户

sql 复制代码
select user;

2. 查询数据库版本

sql 复制代码
SELECT * FROM V$VERSION;

3. 查看达梦数据库当前状态

sql 复制代码
select status$ from v$instance;

4. 查询数据库有哪些用户

sql 复制代码
select username from dba_users;

五、SpringBoot集成

5.1 添加依赖

xml 复制代码
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.192</version>
</dependency>

5.2 yml配置

yml 复制代码
spring:
  datasource:
    # DM
    username: ***
    password: ***
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://127.0.0.1:5236?schema=**

其他和与Mysql使用一样

六、语法适配

5.1 单双引号(重点)

达梦数据库对单双引号有着严格的规定,在执行SQL语句的时候,字符串常量应使用单引号括起,关键字、对象名、字段名、别名等则使用双引号括起。而MySQL中则没有严格的规定,在适配过程中MySQL SQL语句中的单双引号严格按照DM的规定修改。

相关推荐
Elastic 中国社区官方博客21 分钟前
SearchClaw:将 Elasticsearch 通过可组合技能引入 OpenClaw
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
娇娇yyyyyy1 小时前
Qt编程(3): 信号和槽函数
开发语言·数据库·qt
乌鸦乌鸦你的小虎牙4 小时前
qt 5.12.8 配置报错(交叉编译环境)
开发语言·数据库·qt
一只大袋鼠5 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
Anastasiozzzz5 小时前
深入研究Redis的ZSet底层数据结构:从 Ziplist 的级联更新到 Listpack 的完美救场
数据结构·数据库·redis
菠萝蚊鸭5 小时前
x86 平台使用 buildx 基于源码构建 MySQL Wsrep 5.7.44 镜像
数据库·mysql·galera·wsrep
沙漏无语7 小时前
(二)TIDB搭建正式集群
linux·数据库·tidb
姚不倒7 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
隔壁小邓7 小时前
批量更新方式与对比
数据库
数据知道8 小时前
MongoDB复制集架构原理:Primary、Secondary 与 Arbiter 的角色分工
数据库·mongodb·架构