国产数据库--DM(达梦数据库)

公司简介

武汉华工达梦数据库有限公司(达梦公司)是国家规划布局内重点软件企业。公司成立于2000年11月,得到了国家计委、科技部、信息产业部、总装备部、公安部等中央部委、省市政府的支持扶植。


达梦数据库

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,DM7是达梦公司在总结DM系列产品研发与应用经验的基础之上设计的新一代数据库产品,吸收主流数据库产品的优点。众多的企业级特性的实现使得DM7完全能够满足大、中型企业以及金融、电信等核心业务系统的需要,是理想的企业级数据管理和分析平台。

官网:http://www.dameng.com/pro.aspx


收费说明

开发版可免费使用一年(根据下载使用的版本发布编译日期算起),到期后需要购买正式版,购买价格需联系厂家。


安装及配置

1. 安装

下载地址: http://www.dameng.com/down.aspx?TypeId=11&FId=t14:11:14
安装文档:达梦数据库管理系统安装手册.pdf

2. 实例化

安装后需要实例化数据库,需要用到数据库配置助手,以Windows为例,
开始–>所有程序–>达梦数据库,如下:

数据库配置助手.png

具体流程见:达梦数据库管理系统安装手册.pdf


基本概念介绍

配置完成后,打开DM管理工具,如下:
DM管理工具.png

进入后,选择刚才实例化的数据库对象,输入口令,登录数据库,出现以下界面:

界面.png

这里主要简单介绍以下几个重要的概念:数据库、实例、用户、表空间、模式、表、角色、数据文件。

1. 数据库

数据存储的物理介质。广义上讲任何存储数据的物理介质都可叫着数据库,例如一个word文档。但实际上,我们说数据库一般是指像MySQL,ORACLE, HBASE等之类的软件系统。这些系统除了提供数据的存储外,还提供一整套相关的工具或接口对存储的数据进行管理。达梦数据库就是这样的一种系统。

2. 数据库实例

已实例化可存储数据的仓库。达梦数据库一个实例就只能挂一个数据库(即一个实例就是一个数据库),如果想建多个数据库,则需配置启动相应数量的实例。达梦的每个实例有一系列的后台进程和内存结构,这些是相互独立的。

3. 用户

达梦数据库用户是建在实例下的,因为实例相互独立,所有达梦数据库不同的实例下可以有相同的用户名。另外,在达梦数据库中通过create user语句创建用户时,会同时创建一个同名的“模式”。也可以通过create schema语句单独创建模式(特别注意:在Oracle中,用户与schema是一一对应的,不能单独创建模式,要想创建模式得需通过创建一个同名用户来实现),并授权给某个已存在的用户,因此在达梦数据库中用户与模式是1:N的关系。(注:如果先通过create schema创建了模式,再通过create user创建同名用户,不能创建成功。)

4. 表空间

是一个用来管理数据存储的概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。可以将表空间理解为对应一块物理存储区,专门用来存储数据文件。实例化达梦数据库时,默认会创建MAIN、ROLL、SYSTEM、TEAM及HMAIN五个表空间。ROLL、SYSTEM、TEAM表空间系统自行维护,用户所建表(如果未指定存放表空间的话)默认放在MAIN表空间。用户也可自定义表空间,然后在创建用户时指定为默认表空间;也可以在建表时通过加"tablespace SpaceName"语句动态指定该表的存储表空间。

5. 模式(schema)
  • 一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema;
  • 一个用户还可以使用其他的schema(Oracle数据库也可通过权限管理实现访问其他schema);
  • 创建模式不指定用户时,该模式默认为SYSDBA拥有;
  • 在同一模式下不能存在同名对象,但在不同模式中的对象名称可以相同;
  • 用户可以直接访问同名模式对象,但如果要要访问其他模式对象,则必须具有对象权限;
  • 当用户要访问其他模式对象时,必须附加模式名作后缀(schema.table);
    用户是用来连接数据库对象,而模式是用来创建及管理对象的。
6. 表

在达梦数据库中,一个表只能属于一个表空间。

7. 角色

在达梦数据库中,每个用户都有角色。它决定了该用户有什么权限,比如DBA,拥有最高权限。补充说明一点是,实例化的达梦数据库默认有3种角色:DBA, PUBLIC,RESOURCE。新建的用户只拥有PUBLIC角色,该角色几乎做不了什么,因此一般新建用户后,需要单独对他(她)进行授权。

8. 数据文件

数据的物理载体。


数据库操作

详见:DM8 SQL语言使用手册.pdf


IDEA中使用JDBC连接数据库

1、下载JDBC驱动;

2、在IDEA中新建项目,将上一步下载的JDBC的jar包复制到lib项目下,并添加至项目

3、连接数据库示例

package tools;
import java.sql.*;

public class baseDao {
    public static void main(String[] args) {
        String urlString = "jdbc:dm://LOCALHOST:5236/LOCALHOST";
        String userName = "用户名";
        String password ="密码";
        Connection conn = null;
        try {
            System.out.println("Loading JDBC Driver...");
            // 加载 JDBC驱动程序
            Class.forName("dm.jdbc.driver.DmDriver");
            System.out.println("Connecting to DM Server...");
            // 连接 DM 数据库
            conn = DriverManager.getConnection(urlString, userName, password);
            System.out.print("连接成功");
            //sql查询
            String sql = "SELECT * FROM mes_dept";
            Statement stmt = conn.createStatement();
            // 执行查询
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()){
                System.out.print(rs.getString(2));
            }

        } catch (ClassNotFoundException e) {
            try {
                throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    }

首先需要加载达梦的JDBC驱动程序,调用 Class.forName() 方法即可,驱动程序会自动调用 DriverManager的 registerDriver() 方法进行注册。
数据库连接调用DriverManager的 getConnection() 方法 ,该方法需要传入三个参数,分别是数据库连接字符串、用户名和密码。连接成功后即可执行相应sql操作。

详见:DM8程序员手册.pdf 第四章


存储过程

存储过程创建和oracle等相似,集体详见:DM8程序员手册.pdf

在java中调用存储过程如下:

package tools;
import java.sql.*;

public class baseDao {
    public static void main(String[] args) {
        String urlString = "jdbc:dm://LOCALHOST:5236/LOCALHOST";
        String userName = "用户名";
        String password ="密码";
        Connection conn = null;
        try {
            System.out.println("Loading JDBC Driver...");
            // 加载 JDBC驱动程序
            Class.forName("dm.jdbc.driver.DmDriver");
            System.out.println("Connecting to DM Server...");
            // 连接 DM 数据库
            conn = DriverManager.getConnection(urlString, userName, password);
            System.out.print("连接成功");

            CallableStatement cstmt = conn.prepareCall("call p1(?, ?)");
            cstmt.setInt(1, 1);
            cstmt.registerOutParameter(2, Types.VARCHAR);
            cstmt.executeUpdate();
            String x = cstmt.getString(2);
            System.out.println(x);
        } catch (ClassNotFoundException e) {
            try {
                throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    }

这里调用存储过程需要使用Connection对象的 prepareCall() 方法,传入一个字符串格式为:call 存过名(参数占位符),然后设置入参出参执行即可。

第 1 章 结构化查询语言 DM_SQL 简介 12 1.1 DM_SQL 语言的特点 12 1.2 保留字与标识符 13 1.3 DM_SQL 语言的功能及语句 13 1.4 DM_SQL 所支持的数据类型 14 1.4.1 常规数据类型 14 1.4.2 位串数据类型 16 1.4.3 日期时间数据类型 17 1.4.4 多媒体数据类型 21 1.5 DM_SQL 语言支持的表达式 21 1.5.1 数值表达式 21 1.5.2 字符串表达式 23 1.5.3 时间值表达式 23 1.5.4 时间间隔值表达式 25 1.5.5 运算符的优先级 26 1.6 DM_SQL 语言支持的数据库模式 27 第 2 章 手册中的示例说明 28 2.1 示例库说明 28 2.2 参考脚本 36 2.2.1 创建示例库 36 2.2.2 创建模式及表 36 2.2.3 插入数据 43 第 3 章 数据定义语句 60 3.1 数据库修改语句 60 3.2 管理用户 63 3.2.1 用户定义语句 63 3.2.2 修改用户语句 68 3.2.3 用户删除语句 70 3.3 管理模式 71 3.3.1 模式定义语句 71 3.3.2 设置当前模式语句 73 3.3.3 模式删除语句 73 3.4 管理表空间 74 3.4.1 表空间定义语句 74 3.4.2 修改表空间语句 75 目录 3.4.3 表空间删除语句 77 3.4.4 表空间失效文件检查 77 3.4.5 表空间失效文件恢复准备 78 3.4.6 表空间失效文件恢复 78 3.5 管理 HTS 表空间 78 3.5.1 创建 HTS 表空间 79 3.5.2 删除 HTS 表空间 79 3.6 管理表 80 3.6.1 基表定义语句 80 3.6.2 基表修改语句 110 3.6.3 基 表删除语句 120 3.6.4 基表数据删除语句 121 3.7 管理索引 122 3.7.1 索引定义语句 122 3.7.2 索引修改语句 126 3.7.3 索引删除语句 128 3.8 管理位图连接索引 128 3.8.1 位图连接索引定义语句 128 3.8.2 位图连接索引删除语句 130 3.9 管理全文索引 130 3.9.1 全文索引定义语句 130 3.9.2 全文索引修改语句 132 3.9.3 全文索引删除语句 132 3.10 管理序列 133 3.10.1 序列定义语句 133 3.10.2 序列删除语句 136 3.11 管理 SQL 域 136 3.11.1 创建 DOMAIN 136 3.11.2 使用 DOMAIN 137 3.11.3 删除 DOMAIN 137 3.12 管理上下文 138 3.12.1 创建上下文 138 3.12.2 删除上下文 140 3.13 约束的启用与禁用 141 3.14 设置当前会话时区信息 141 3.15 注释语句 142 3.16 设置会话级别的 INI 参数 143 3.17 设置系统级别的 INI 参数 144 3.18 设置列生成统计信息 144 第 4 章 数据查询语句 146 4.1 单表查询 156 4.1.1 简单查询 156 4.1.2 带条件查询 158 目录 4.1.3 集函数 161 4.1.4 分析函数 165 4.1.5 情况表达式 180 4.2 连接查询 183 4.2.1 交叉连接 183 4.2.2 自然连接(NATURAL JOIN) 184 4.2.3 JOIN … USING 185 4.2.4 JOIN…ON 185 4.2.5 自连接 185 4.2.6 内连接(INNER JOIN) 186 4.2.7 外连接(OUTER JOIN) 187 4.2.8 哈希连接(HASH JOIN) 191 4.3 子查询 192 4.3.1 标量子查询 192 4.3.2 表子查询 193 4.3.3 派生表子查询 196 4.3.4 定量比较 196 4.3.5 带 EXISTS 谓词的子查询 197 4.3.6 多列表子查询 198 4.4 公用表表达式 199 4.4.1 公用表表达式的作用 201 4.4.2 公用表表达式的使用 201 4.5 合并查询结果 202 4.6 GROUP BY 和 HAVING 子句 204 4.6.1 GROUP BY 子句的使用 204 4.6.2 ROLLUP 的使用 205 4.6.3 CUBE 的使用 206 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值