DM数据库基本操作

DM数据库基本操作

  • 创建表空间

    • 使用 SYSDBA 用户登录 DM 管理工具。右键表空间模块,点击【新建表空间】

      在这里插入图片描述

    • 定义表空间名

      • 创建表空间名为TEST,指定数据文件为TEST.DBF,默认

        • 数据文件就安装在data\DAMENG目录下

        注:这里是表示表空间存放的地方,不是在这里面找空间(我最开始就是理解错了)

        在这里插入图片描述

        • 点击【添加】,然后在文件路径输入对应的数据文件即可

        注意:

        添加的数据文件大小最小为 4096 * 页大小,如页大小为 8K,则可添加的文件最小值为 4096*8k=32M。上图中文件最小为 128 MB,对应页大小为 32 KB。

        • 这里就体现出了初始化时页大小选取的关键了,不仅影响表空间数据文件大小,还会对表中每个字段及每条记录产生限制。

          数据库页大小每个字符类型字段实际最大长度(字节)每行记录最大字段外其他字段总长度(字节)表空间单个数据文件最小 (MB)/最大 (MB)
          4 KB1938204716/8388608
          8 KB3878409532/16777216
          16 KB8000819564/33554432
          32 KB818816176128/67108864
    • 使用命令行创建表空间TEST

      • 指定文件为/data/dmdata/DAMENG/TEST.DBF,初始大小为128MB,其他默认。

        create tablespace "TEST" datafile '/data/dmdata/DAMENG/TEST.DBF' size 128 ;
        
    • 修改表空间参数

      • 根据项目具体情况修改表空间文件、路径、大小、是否自动扩充、扩充上限等信息

        在这里插入图片描述

      • 命令行修改表空间信息,打开自动扩展,每次扩展100M,扩展上限为120240M

        alter tablespace "TEST" datafile '/data/dmdata/DAMENG/TEST.DBF' autoextend on next 100 maxsize 10240;
        
    • 设置加密算法、密码

      • 根据项目需求设置加密算法、加密密码等信息。也可以设置为空

        在这里插入图片描述

        • 设置完了点击【确定】就可以了
      • 完整的命令行形式:

        • 指定数据库文件为 /data/dmdata/DAMENG/TEST.DBF,初始大小为 128M,打开自动扩展,每次自动扩展 100M ,扩展上限 10240M,使用 RC4 加密算法

          create tablespace "TEST" datafile '/data/dmdata/DAMENG/TEST.DBF' size 128 autoextend on next 100 maxsize 10240 CACHE = NORMAL encrypt with RC4;
          
  • 创建用户

    登录DM管理工具

    • 新建用户

      • 展开用户模块,右键管理用户,点击【新建用户】

        在这里插入图片描述

    • 用户名、密码

      • 设置用户名、密码(常规操作)

        在这里插入图片描述

        • 这里举例:用户名为TEST,密码为123456789

        注意:密码默认长度不少于9位

    • 定义表空间、索引表空间

      • 就是指定表空间和索引表空间是哪一个

        在这里插入图片描述

    • 使用命令行:

      • 创建用户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 "TEST"
        default index tablespace "TEST";
        
        grant "PUBLIC","SOI" to "TEST";
        
  • 授权

    • 授予用户DBA权限(用户建立后右键点击【修改用户】)

      在这里插入图片描述

      • 命令行:

        grant "DBA" to "TEST";
        
    • 授予用户RESOURCE权限(反正就是按需给权限,这里只是演示,就只搞这一个权限)

      在这里插入图片描述

      • 命令行:

        grant "RESOURCE" to "TEST";
        
  • 用户与模式的关系

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

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

      • 以TEST用户为例,查询自己下面的表,不用加对象名(新建连接,注意修改用户名为TEST,输入密码就行)

        select * from test
        

        在这里插入图片描述

        • 这个是需要自己先创建表才能查(不可能啥都没有你还想查出来吧)

          creat table test(c1 int,c2 int);
          
    • 查询其他用户模式下的表,需要加对象名

      • 以 TEST 用户为例,查询 DBTEST 用户模式下的表 TABLE_TEST,如不加对象名,则查询会报错“无效的表名或者视图名[TABLE_TEST]”

        在这里插入图片描述

      • 如果没有授权相关权限,则会报错“没有对象[DBTEST.TABLE_TEST]的查询权限”

        在这里插入图片描述

      • 这个时候就需要授予TEST用户权限

        --使用 root 用户授予 TEST 用户查询表 TABLE_TEST 的权限
        grant SELECT on "DBTEST"."TABLE_TEST" to "TEST";
        --使用 TEST 用户登录数据库查询表 TABLE_TEST
        select * from DBTEST.TABLE_TEST;
        

        在这里插入图片描述

  • 创建数据库对象(终于开始搞数据库了)

    • 创建表

      • 创建表CITY(其实DM8就已经把这个示例创建好了,所以可以直接跳过这些步骤,看看怎么操作就好)

        CREATE TABLE dmhr.city
        (
         city_id CHAR(3) NOT NULL,
         city_name VARCHAR(40) NULL,
         region_id INT NULL
        );
        
        • 数据库操作啥的感觉都差不多
    • 插入数据

      • 在 CITY 表中插入 11 条数据

        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);
        

        在这里插入图片描述

    • 查询数据

      • 语句如下:

        SELECT * FROM dmhr.city;
        

        在这里插入图片描述

    • 创建视图

      • 创建一个视图,命名为 V_CITY,保存 region_id 小于 4 的数据,列名有:city_id,city_name,region_id

        CREATE VIEW dmhr.v_city AS
        SELECT
                city_id  ,
                city_name ,
                region_id
        FROM
                dmhr.city
        WHERE
                region_id < 4;
        

        在这里插入图片描述

      • 查询视图结果

        SELECT * FROM dmhr.v_city;
        

        在这里插入图片描述

    • 创建存储过程

      • 创建一个名为 PROC_1 的存储过程,入参数据类型为 INT,变量 B 赋予初始值 10,输出变量 A 的值为输入的变量 A 值与变量 B 值之和。

        CREATE
        PROCEDURE dmhr.proc_1
                (a IN OUT INT)
        AS
                b INT:=10;
        BEGIN
                a:=a+b;
                PRINT 'DMHR.PROC_1调用结果:'||a;
        END;
        
      • 调用存储过程,输入变量值 3,得到结果值 13

        CALL dmhr.proc_1(3);
        

        在这里插入图片描述

    • 创建函数

      • 创建一个名为 FUN_1 的存储函数,返回类型为 INT 类型。两个参数 A、B 的和赋给了变量 S,RETURN 语句将 S 的值作为函数返回。

        CREATE
                FUNCTION dmhr.fun_1
                        (a INT, b INT)
                        RETURN INT
                AS
                        s INT;
                BEGIN
                        s:=a+b;
                        RETURN s;
                END;
        

        在这里插入图片描述

      • 来个例子,给变量A,B赋值为4和5,得出结果

        SELECT dmhr.fun_1(4,5);
        

        在这里插入图片描述

    • 创建序列

      • 创建序列 SEQ_QUANTITY,起始值为 5,增量值为 2,最大值为 200。

        CREATE SEQUENCE dmhr.seq_quantity START WITH 5 INCREMENT BY 2 MAXVALUE 200;
        

        在这里插入图片描述

      • 查询序列下一值

        SELECT dmhr.seq_quantity.nextval FROM dual;
        

        在这里插入图片描述

    • 创建触发器(如果觉得看不太懂,建议去学习一下数据库基础,跟MySQL差别不大)

      • 创建一个触发器 TRG_UPD,当对表 CITY 进行更新行为之后,定义的触发器 TRG_UPD 将被激发

        CREATE TRIGGER dmhr.trg_upd AFTER
                UPDATE ON dmhr.city
                FOR EACH ROW
                        BEGIN
                        PRINT 'UPDATE OPERATION ON CITY !!';
                        END;
        

        在这里插入图片描述

      • 示例示例!对CITY表进行更新操作,测试触发器

        UPDATE dmhr.city SET city.region_id=8 WHERE city.city_id='XA';
        

        在这里插入图片描述

    • 创建定时任务(这个有点儿复杂)

      • 创建代理环境

        • 右键代理,点击创建代理环境

          在这里插入图片描述

      • 创建作业

        • 在创建代理环境成功后,下方就会出现三个文件夹,右键作业,点击新建作业

          在这里插入图片描述

        • 作业设置

          • 常规—配置作业名,作业描述(作业名为TEST)

            在这里插入图片描述

        • 配置“作业步骤”(点击作业步骤,不是直接点击确认啊)

          • 填写步骤名称:定时执行查询语句;步骤类型:SQL脚本

            在这里插入图片描述

          • 填写执行的脚本语句

            select * from V$instance;
            

            在这里插入图片描述

          • 点击确认

            在这里插入图片描述

        • 作业调度

          • 新建作业调度,设置时间,执行周期(这里我示例设置为周天,每隔一小时执行一次)

            在这里插入图片描述

          • 点击确认设置成功

            在这里插入图片描述

        • 确认后就可以看到作业设置成功

          在这里插入图片描述

参考

  • https://eco.dameng.com/document/dm/zh-cn/start/
  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值