



在达梦数据库中,系统为每个用户都自动创建了一个与用户名同名的模式作为默认模式,用户还可以用模式定义语句创建其他模式。一个用户可以创建多个模式,但一个模式只归属于一个用户,一个模式中的对象(表、视图等)可以被该用户使用,也可以授权给其他用户使用。
在创建模式时要指定归属的用户名,可以在创建模式的同时创建模式中的对象,但通常是分开进行的。
本节直接通过例子介绍用达梦数据库提供的图形化管理工具来创建模式的方法。
【 例2-7 】以用户SYSDBA登录创建一个模式,名称为DMHR2,模式DMHR2属于SYSDBA用户。
步骤1:启动DM管理工具,以用户SYSDBA登录数据库,右键单击对象导航窗体中的“模式”节点,弹出如图2-11所示的操作界面。
图2-11 新建模式快捷菜单
步骤2:在弹出的快捷菜单中单击“新建模式”按钮,弹出如图2-12所示的操作界面。
图2-12 设置模式名
步骤3:进入如图2-12所示的常规参数页面,设置模式名为“DMHR2”。单击“选择用户”按钮,弹出“选择(用户)”对话框,如图2-13所示,选中SYSDBA用户并单击“确定”按钮返回。
图2-13 “选择(用户)”对话框
步骤4:在图2-12中,单击“确定”按钮,完成模式创建过程。
1)语法格式
创建模式的SQL命令格式如下:
其中,各子句说明如下:
<用户名>指明给哪个用户创建模式,如果默认用户名,则默认给当前用户创建模式。语法格式中其他部分都是可选项,如<基表定义>、<基表修改>、<视图定义>等子句,后面章节将详细介绍。
2)应用举例
【 例2-8 】以用户SYSDBA登录数据库,为SYSDBA用户增加一个模式,模式名为DMHR3,并在DMHR3模式中定义一张表TAB1。SQL命令如下:
(1)模式名不可与其所在数据库中其他的模式名重复;在创建新模式时,如果存在同名的模式,则该命令不能被执行。
(2)使用该语句的用户必须具有DBA或CREATE SCHEMA权限。
(3)模式一旦定义,该用户所建表、视图等均属于该模式,其他用户访问该用户所建立的表、视图等均需要在表名、视图名前冠以模式名;而建表者访问自己当前模式所建立的表、视图时可以省略模式名;若没有指定当前模式,则系统自动以当前用户名作为模式名。
(4)模式定义语句不允许与其他SQL语句一起执行。
(5)在DM管理工具中使用该SQL语句必须以“/”结束。
当一个用户有多个模式时,可以指定一个模式为当前默认模式,用SQL命令来设置当前模式。
设置当前模式的SQL命令格式如下:
【 例2-9 】将DMHR3模式设置为SYSDBA用户的当前模式。
用DM管理工具设置当前模式步骤如下。
步骤1:启动DM管理工具,以用户SYSDBA登录数据库,默认密码为“SYSDBA”。
步骤2:在DM管理工具中,单击工具栏中的“新建查询”按钮,新建一个查询。
步骤3:在新建的查询中输入下面的SQL语句。注意,达梦数据库在执行SQL语句时,会自动将数据对象名转换为大写,如不希望强制转换,可以使用双引号将数据对象名括起来。
步骤4:选中刚才输入的语句,并单击DM管理工具栏上向右的三角按钮,执行输入的语句,即完成操作。
在达梦数据库中,允许用户删除整个模式,当模式下有表或视图等数据库对象时,必须采取级联删除,否则删除失败。
【 例2-10 】以用户SYSDBA登录DM管理工具,删除DMHR2模式。
步骤1:启动DM管理工具,并以用户SYSDBA登录,右键单击对象导航窗体中“模式”节点下的“DMHR2”节点,弹出如图2-14所示的快捷菜单。
图2-14 删除快捷菜单
步骤2:在如图2-14所示快捷菜单中,单击“删除”按钮,弹出“删除对象”对话框,如图2-15所示。
图2-15 “删除对象”对话框
步骤3:在图2-15中,单击“确定”按钮,完成DMHR2模式的删除。
1)语法格式
删除模式的SQL命令格式如下:
如果使用RESTRICT选项,则只有当模式为空时删除才能成功;否则,当模式中存在数据库对象时,删除失败。默认选项为RESTRICT选项。
如果使用CASCADE选项,则整个模式、模式中的对象,以及与该模式相关的依赖关系都被删除。
2)应用举例
【 例2-11 】以用户SYSDBA登录,但删除DMHR2模式。
(1)以用户SYSDBA登录数据库。新手推荐使用DM管理工具中的图形化界面登录。
(2)直接删除DMHR2模式。
命令执行后的结果为
删除失败的原因是,DMHR2模式不为空,存在数据库对象TAB1,不能删除非空的模式。
(3)使用CASCADE选项删除DMHR2模式。
该命令执行成功,因为使用CASCADE选项会将整个模式、模式中的对象及其依赖关系全部删除。为了不影响后续操作,重新创建DMHR2模式及相关表。
(1)被删除模式必须是当前数据库中已经存在的模式。
(2)执行删除模式的用户必须具有DBA权限,或者是该模式的所有者。