最近学习了达梦的dm8数据库,由于之前主要使用的是mysql数据库,对于dm8中“模式”的概念执拗了好久,简要记录下留作以后学习。
什么是模式?模式的作业?模式和用户的关系?模式和表的关系?如何使用?
什么是模式?
模式是一个逻辑容器,可以把模式理解为文件夹,方便我们对一组数据库对象进行管理,在概念上可将其看作是包含表、视图、索引和权限定义的对象。
具体的说,dm8模式下包含了表、视图、约束、索引、序列、触发器、存储过程/函数等(借用达梦大学的图...)
模式的作用?
1.把数据对象放在一起,便于管理;
2.不同的模式之间互不干扰,便于使用
3.不同模式下的数据对象不会命名冲突
总之相似于操作系统里的目录,但是模式不能嵌套
模式DM8数据库包含CTISYS、SYS、SYSAUDITOR、SYSDBA、SYSSSO等模式,在创建数据库时如果勾选了创建DMHR示例库则会创建DMHR模式及其模式下的相关表等信息
模式与用户的关系?
在DM8中,一个用户可以拥有多个模式,一个模式仅归属于一个用户;
但是,一个模式中的对象(表、视图等)可以被多个用户使用(前提是有访问权限)
模式与表的关系?
有些相似于Mysql中Database的概念:一个模式可以拥有多张表
Mysql:select * from 库名.表名 where id = 1 => DM8:select * from 模式名.表名 where id = 1
模式下也不仅仅只有表,前面我们介绍过,表、视图、约束、索引、序列、触发器、存储过程/函数等都属于模式下的对象
模式的管理
1.创建与删除:
在创建用户时,系统会为每一个用户自动建立了一个与用户名同名的模式作为其默认模式,用户还可以用模式定义语句建立其它模式
CREATE SCHEMA <模式名> [AUTHORIZATION <用户名>]
DROP SCHEMA <模式名> [RESTRICT | CASCADE];
2.使用 :
Mysql:use database 库名 => DM8:set schema 模式名;