表空间操作

创建表空间

创建表空间TEST,指定数据文件 test.dbf,大小128M。

CREATE TABLESPACE TEST DATAFILE 'TEST.dbf' SIZE 128;

修改表空间

修改表空间TEST名称为TEST_1。

ALTER TABLESPACE TEST RENAME TO TEST_1;

修改表空间TEST_1中数据文件TEST.dbf的大小为200M。

ALTER TABLESPACE TEST_1 RESIZE DATAFILE 'TEST.dbf' TO 200;

用户操作

创建用户关联表空间

创建用户USER_TEST,密码为TEST@123456,并关联TEST_1表空间。

CREATE USER "USER_TEST" IDENTIFIED BY "TEST@123456" DEFAULT TABLESPACE "TEST_1" DEFAULT INDEX TABLESPACE "TEST_1";

授予权限

授予用户USER_TEST权限,包含DBA、PUBLIC、RESOURCE角色权限

GRANT "DBA","PUBLIC","RESOURCE" TO "USER_TEST";

用户与模式的关系

每个用户有一个默认的同名的模式,访问自己模式下的表、视图等,不需要加模式名,访问其他模式下的对象需要加上模式名。
以 TEST 用户为例,查询 SYSJOB 用户模式下的一张表

SELECT * FROM SYSJOB.SYSJOBS;

创建数据库对象

创建表

在模式 DMHR 下创建表 CITY,并插入数据。

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;

创建视图

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,得出结果 9。

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;

创建触发器

创建一个触发器 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';

达梦数据库社区地址:https://eco.dameng.com

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐