DM模式对象和非模式对象
表、视图、索引、触发器、存储过程、序列、同义词等属于“模式对象”用户、角色、权限、表空间属于“非模式对象”。内容一DM模式对象1.模式用户的模式(Schema指的是用户账号拥有的对象集在概念上可将其看作是包含表、视图、索引和权限定义的对象。在 DM 中一个用户可以创建多个模式一个模式中的对象表、视图等可以被多个用户使用。模式不是严格分离的一个用户可以访问他所连接的数据库中有权限访问的任意模式中的对象。创建模式- 语法格式1指定模式名和所属用户CREATE SCHEMA 模式名[AUTHORIZATION 用户名][DDL_GRANT 子句 { DDL_GRANT 子句}];-- 语法格式2仅指定所属用户模式名与用户名相同CREATE SCHEMA AUTHORIZATION 用户名 [DDL_GRANT 子句 { DDL_GRANT 子句}];实例 CREATE SCHEMA DMSEC AUTHORIZATION SYSDBA;所有权与权限通过AUTHORIZATION指定所有者默认为SYSDBA仅SYSDBA能为其他用户创建模式普通用户只能创建自己拥有的模式用户必须具备DBA角色或CREATE SCHEMA权限。对象访问规则对象默认归属当前模式其他用户访问需加模式名前缀如schema_name.table_name所有者访问自身对象可省略前缀未指定模式时默认使用当前用户名。2.表语法格式:CREATE TABLE 模式名.表名(列名1 数据类型 列级约束,列名2 数据类型 列级约束,列名3 数据类型 列级约束,...);实例DMSEC 模式下创建地址表用于存储地址信息3.视图视图是一张“虚拟表”它不存数据只存一条查询命令语法格式CREATE [OR REPLACE] VIEW[模式名.]视图名[(列名 {,列名})]AS 查询说明[WITH [LOCAL|CASCADED] CHECK OPTION] | [WITH READ ONLY];实例4.索引详细可见管理索引 | 达梦技术文档唯一索引索引数据根据索引键唯一函数索引包含函数/表达式的预先计算的值位图索引对低基数的列创建位图索引位图连接索引针对两个或者多个表连接的位图索引主要用于数据仓库中全文索引在表的文本列上而建的索引。具体内容请参考第 18 章数组索引在一个只包含单个数组成员的对象列上创建的索引普通索引除了唯一索引、函数索引、位图索引、位图连接索引、全文索引、数组索引以外的索引均为普通索引语法格式CREATE [UNIQUE] INDEX 索引名ON 表名 (列名1 [ASC|DESC], 列名2 [ASC|DESC], ...)[STORAGE (存储参数)];实例5.约束约束是数据库表中对数据强制实施的规则用于保障数据的完整性和准确性实例主键约束PERSONID非空约束NAME、PHONE、ADDRESSID默认约束GENDER 默认为 M检查约束GENDER 只能为 M 或 FPHONE 必须为 11 位外键约束ADDRESSID 引用 ADDRESS 表的 ADDRESSID唯一约束PHONE通过唯一索引实现6.触发器触发器是一种特殊的存储过程它不通过手动调用执行而是在某个表发生特定事件INSERT、UPDATE、DELETE时自动触发执行。语法格式CREATE [OR REPLACE] TRIGGER 模式名.触发器名BEFORE | AFTER | INSTEAD OFINSERT | UPDATE | DELETE [OF 列名]ON 模式名.表名[FOR EACH ROW][WHEN (条件)]DECLARE-- 声明变量可选BEGIN-- 触发器执行体PL/SQL 代码END;实例触发器禁止删除北京地址删除时自动报错7.序列DM数据库中的数据库实体之一。通过使用序列多个用户可以产生和使用一组不重复的有序整数值。语法格式生成序列CREATE SEQUENCE 模式名.序列名[INCREMENT BY 步长][START WITH 初始值][MAXVALUE 最大值 | NOMAXVALUE][MINVALUE 最小值 | NOMINVALUE][CYCLE | NOCYCLE][CACHE 缓存个数 | NOCACHE][ORDER | NOORDER];实例创建了一个从1开始每次加1的序列8.同义词同义词让用户能够为数据库的一个模式下的对象提供别名。语法格式CREATE [PUBLIC] SYNONYM 模式名.同义词名 FOR 模式名.对象名;实例创建同义词ADDR映射至基表ADDRES内容二DM非模式对象1.表空间表空间是一个逻辑结构对应数据文件为物理结构DM中将数据的所有对象在逻辑上都存放在表空间中而物理上都存储在所属表空间的数据文件中文件创建后不能删除改数据文件名时需要表空间处于脱机状态示例CREATE TABLESPACE DMFIRST DATAFILE /dm8/data/DAMENG/DMFIRST01.DBF SIZE 32;2.用户管理达梦数据库采用三权分立或四权分立的安全机制通过四个内置管理员角色分别承担不同职责SYSDBA 负责数据库日常管理和维护SYSSSO 负责安全策略和标记管理SYSAUDITOR 负责审计和监控SYSDBO 负责数据库对象的管理操作。四权分立相比三权分立多出一个 SYSDBO 角色各管理员权限相互独立且相互制约。新建管理员用户时可通过 Manager 工具指定其表空间若未指定则默认使用 MAIN 表空间。-- 创建用户 DMFIRST密码为 Dameng123密码策略为 0无限制CREATE USER DMFIRST IDENTIFIED BY Dameng123 PASSWORD_POLICY 0DEFAULT TABLESPACE DMFIRST;-- 授予 DMFIRST 用户 PUBLIC、SOI、VTI 角色权限GRANT PUBLIC, SOI, VTI TO DMFIRST;查询3.权限管理①系统级权限数据库对象的创建、删除、修改数据库的备份等权限一般由SYSDBA/SYSAUDITOR/SYSSSO指定也可以由具有特权的其他用户授予。实例SYSDBA 给 DMFIRST 授予 CREATE USER 建用户权限执行成功。DMFIRST 可新建用户 ZSD_USER但删除该用户时报 - 5533 错误仅授予建用户权限不包含删用户权限。②对象级权限对数据库对象中的数据的访问权限一般由数据库对象的所有者授予用户也可由SYSDBA用户指定或由具有该对象权限的其他用户授权。实例SYSDBA 给 DMFIRST 授予DMSEC.ADDRESS表的查询SELECT对象权限执行成功。DMFIRST 登录后可正常查询该表但执行 INSERT 插入时报 - 5501提示缺少插入权限。4.角色管理角色是一组权限的组合DM中包含预定义的角色SYSDBA、SYSAUDITOR、SYSSSO、SYSDBO和用户自定义的角色预定义角色包含部分权限管理员可以将角色直接授予给用户自定义角色则需在创建后手动赋予权限然后将该角色授予给需要的用户。实例SYSDBA 新建角色 ROLE_ADDR给该角色授予表 DMSEC.ADDRESS 的查询、插入权限再把角色赋给 DMFIRST。DMFIRST 拥有角色权限可正常查询、插入数据但执行 DELETE 删除时报 - 5502角色未分配删除权限