当前位置: 首页 > article >正文

达梦数据库SCHEMA使用初探

1. schema功能描述

用户的模式(Schema)指的是用户账号拥有的对象集,在概念上可将其看作是包含表、视图、索引和权限定义的对象。在 DM 中,一个用户可以创建多个模式,一个模式中的对象(表、视图等)可以被多个用户使用。模式不是严格分离的,一个用户可以访问他所连接的数据库中有权限访问的任意模式中的对象。
系统为每一个用户自动建立了一个与用户名同名的模式作为其默认模式,用户还可以用模式定义语句建立其它模式。
采用模式的原因有几点:
(1)允许多个用户使用一个数据库而不会干扰其它用户;
(2)把数据库对象组织成逻辑组,让它们更便于管理;
(3)第三方的应用可以放在不同的模式中,这样可以避免和其它对象的名字冲突。模式类似于操作系统层次的目录,只不过模式不能嵌套。
DM 模式可以通过 SQL 语句进行操作。DM 模式主要包含以下的模式对象:

  • 表;
  • 视图;
  • 索引;
  • 触发器;
  • 存储过程/函数;
  • 序列; 全文索引;
  • 包;
  • 同义词;
  • 类;
  • 外部链接。

在引用模式对象的时候,一般要在模式对象名前面加上模式名。具体格式如下:
[模式名].对象名
当然,在当前模式和要引用的模式对象所属的模式相同时,可以省略模式名。如果我们访问一个表时,没有指明该表属于哪一个模式,系统就会自动给我们在表前加上缺省的模式名。类似地,如果我们在创建对象时不指定该对象的模式,则该对象的模式为用户的缺省模式。

2. schema使用方法

2.1创建schema

[dmdba@lei3 ~]$ disql sysdba/'"Dameng@123"':5236

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.808(ms)
disql V8
SQL> create schema lei AUTHORIZATION SYSDBA;
2   /
操作已执行
已用时间: 10.687(毫秒). 执行号:601.
SQL> set schema lei;
操作已执行
已用时间: 1.825(毫秒). 执行号:0.

2.2指定schema

登录数据库后,默认当前模式为用户名同名的模式;可以用set schema [模式名]语句来切换schema,后续的操作均在该schema上进行。

SQL> set schema lei;
操作已执行
已用时间: 0.340(毫秒). 执行号:0.
SQL> create table t(id int);
操作已执行
已用时间: 6.161(毫秒). 执行号:605.
SQL> insert into t values(1);
影响行数 1

已用时间: 0.810(毫秒). 执行号:606.
SQL> commit;
操作已执行
已用时间: 0.676(毫秒). 执行号:607.
SQL> select * from t;

行号     ID         
---------- -----------
1          1

已用时间: 0.719(毫秒). 执行号:608.
SQL> set schema sysdba;
操作已执行
已用时间: 0.289(毫秒). 执行号:0.
SQL> select * from lei.t;

行号     ID         
---------- -----------
1          1

已用时间: 0.605(毫秒). 执行号:610.

2.3删除用户

DROP SCHEMA [IF EXISTS] <模式名> [RESTRICT | CASCADE];

  • 删除不存在的模式会报错。若指定 IF EXISTS 关键字,删除不存在的模式,不会报错;
  • 用该语句的用户必须具有 DBA权限或是该模式的所有者;
  • 如果使用 RESTRICT选项,只有当模式为空时删除才能成功,否则,当模式中存在数据库对象时则删除失败。默认选项为 RESTRICT 选项;
  • 如果使用CASCADE 选项,则将整个模式、模式中的对象,以及与该模式相关的依赖关系都删除。
SQL> drop schema lei1;
drop schema lei1;
第1 行附近出现错误[-2103]:无效的模式名[LEI1].
已用时间: 0.733(毫秒). 执行号:0.
SQL> drop schema if exists lei1; 
操作已执行
已用时间: 0.444(毫秒). 执行号:1404.
SQL> drop schema if exists lei; 
drop schema if exists lei; 
第1 行附近出现错误[-5001]:模式[LEI]不为空.
已用时间: 0.407(毫秒). 执行号:0.
SQL> drop schema if exists lei cascade; 
操作已执行
已用时间: 33.594(毫秒). 执行号:1405.
SQL> select * from lei.t;
select * from lei.t;
第1 行附近出现错误[-2103]:无效的模式名[LEI].
已用时间: 0.536(毫秒). 执行号:0.

3. 达梦schema使用总结

  • DM的Schema类似MYSQL中的Database概念。
  • 在DM中,创建用户时会自动创建一个同名的Schema;如果数据库中已经存在该schema,则创建用户会报错。查询时不指定Schema默认使用和用户同名的模式。
  • 在disql命令行中执行create schema命令创建模式时,要注意最后输入/来结束该命令。这和其他sql不太一样。
  • 可以通过set schema语句切换当前操作所在的schema,或者在表前显式加上schema名:SchemaName.TableName。
  • 可以drop schema的方式删除模式,如模式中存在对象,删除会执行失败;可以添加cascade来同时删除schema内的其他对象。

更多内容请参考:https://eco.dameng.com


http://www.kler.cn/news/310384.html

相关文章:

  • Android中的Intent的作用
  • 关于循环Socket创建超Linux文件句柄限制现象分析
  • Web接入Sonic平台之安装
  • 【yolo格式标签转VOC格式】
  • 滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
  • mysql的分区表
  • 【Finetune】(一)、transformers之BitFit微调
  • ZLMediaKit Windows编译以及使用
  • 浅谈Spring Cloud:认识微服务
  • Flutter问题记录 - 适配Xcode 16和iOS 18
  • 【系统架构设计师-2011年真题】案例分析-答案及详解
  • 优思学院|如何从零开始自己学习六西格玛?
  • 井盖状态检测数据集
  • TCP socket
  • Android 进程间通信
  • 使用llama.cpp 在推理MiniCPM-1.2B模型
  • 24年蓝桥杯及攻防世界赛题-MISC-3
  • 【Redis】Redis 典型应用 - 分布式锁原理与实现
  • 计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Python编程 - 协程
  • [PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking/手势跟踪)
  • FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析
  • centos远程桌面连接windows
  • iPhone 16系列:熟悉的味道,全新的体验
  • 浅谈Tair缓存的三种存储引擎MDB、LDB、RDB
  • 使用Addressables+SpriteAtlas打包产生冗余
  • Python知识点:详细讲解Python字节码与反编译
  • Elasticsearch 开放推理 API 新增阿里云 AI 搜索支持
  • react 高阶组件
  • 优化数据的抓取规则:减少无效请求