检测网站名 注册,怎么seo关键词优化排名,在线网站建设询问报价,中国建设网官方网站6背景知识概述
数据库模式
“实例/集簇”金仓是一个单实例管多库#xff0c;把多库的集合叫做集簇#xff0c;他们共用一个集簇目录#xff0c;比如data目录下面里的子目录的数据文件。数据库里面有模式#xff0c;在金仓里面模式是#xff1a;据逻辑相关性对象的集…背景知识概述
数据库模式
“实例/集簇”金仓是一个单实例管多库把多库的集合叫做集簇他们共用一个集簇目录比如data目录下面里的子目录的数据文件。数据库里面有模式在金仓里面模式是据逻辑相关性对象的集合就叫一个模式。 什么是逻辑相关性对象比如这些表、索引、视图……就是模式对象什么是模式对象属于模式里面的对象叫做模式对象通常分为三级架构 数据库-数据库中的模式-模式中的对象 数据库包含多个模式的每个模式也包含多个对象在同一个模式里面模式对象名不可重名。不同模式可重名。 数据库集簇Database Cluster与数据库实例Databse Instance。 KES 集簇是指单个KES实例管理的数据库的集合KES集簇中的库使用相同的全局配置文件和监听端口、共享相关的进程和内存结构同一数据库 集簇中的进程、相关的内存结构统称为实例。
一个数据库管理一个集簇同样一个集簇被一个数据库管理
角色用户
用户和数据库都属于实例内部的对象它们是平级的。实例内部我们称为全局性的对象。
金仓的用户数据库是属于实例级别的对象它并不属于哪个数据库的。
这些箭头代表的是权限 用户是全局性的而模式是属于数据库的
表空间
表空间给数据库里面多对多
表空间只是为了关联一个存储目录最后通过对象数据表空间关联到它的存储目录通过这么一个纽带把逻辑和物理关联起来 命令
列出表空间清单
\db表空间
创建表空间
我们首先要关心这个新建的表空间它的存储位置在哪里首先我们要创建一个存储目录。目录权限设置为700
mkdir db01
chmod 700 db01/创建表空间的表名为 tbs01 及物理存储位置为 /home/kingbase/db01
create tablespace tbs01 location /home/kingbase/db01;表名、存储位置路径可变其他固定格式 如果遇到这种情况 要使用所属的用户进行划分。 创建成功后查看表空间可以看见tbs01表空间创建成功 来到存储位置目录下可以看见多了一个不认识的目录名使用下面命令
sys_controldata可以看见目录名字是固定格式对应的是版本号 修改表空间的属主
alter tablespace tbs01 owner to user01;修改表空间的名称
alter tablespace tbs01 rename to tbs02;创建数据库
指定关联的表空间
创建数据库的名字为oa指定表空间为 tbs01
create database oa tablespace tbs01 ;可以看见创建成功 关联字符集
也可以根据要求指定字符集创建
create database oa encoding tablespace tbs01 ;查看oa数据库的详细信息 对比其他的数据库可以看见只有oa数据库的表空间不是默认的 我们再返回目录查看可以看见又多了一个目录 SYS_DATABASE 是在一个系统里的所有数据库共享的也叫金仓数据字典
我们可以查询一下这个就知道了为什么目录名为 16788
select oid,datname from sys_database;可以看见这个oid刚好对应上了目录的名字
修改数据库
这个时候我们修改数据库db01 的表空间设置为 tbs01
alter database db01 set tablespace tbs01 ;这个时候我们访问表空间的存储目录下可以看见又多了一个目录这个目录的名字就是对应着这个db01数据库的oid 这也说明了一个表空间可以对多个数据库同时使用
表
创建一个表
创建一个表名为 s2 关联的表空间为 tbs01 关联另一个表的信息语句为 as 后面的语句
create table s2 tablespace tbs01 as select * from exam.student ;查看 s2 表的详细信息可以看见大小
\dt s2查看这个表的路径
select sys_relation_filepath(s2);可以看见这个目录下我们并不认识 我们回到用户自定义表空间的管理位置data目录在这里 可以发现这个是软连接对应上了 使用这个函数查询
select * from sys_tablespace;可以看见表空间目录名字对应的id是16787 也就说明了为什么签名那个目录为什么会是16787
创建表指定模式
关联查询语句
with no data; 不包含数据
create table schema01.s2 as select * from exam.student with no data;修改
修改表的名字
alter table product rename to b;修改一个表的表空间
修改 exam模块下的s1表的 表空间设置为 tbs01
alert table exam.s1 set tablespace tbs01 ;查看这个表详细的信息可以看见它的表空间已经设置为 tbs01 修改表的模式
修改表的模块为schema01
alter table s1 set SCHEMA schema01;插入表数据关联其他表的内容
insert into schema01.s1 select * from exam.student;模式
创建一个模式
在oa数据库中创建一个模式名为 sch01
\c
create schema sch01;创建模式且指定属主设置
属主设置为u01
create schema schema01 authorization u01;指定模式限定创建一个表
在oa数据库中的创建一个模式为 sch01 其中这个模式的表为 t01
可以看见模式里的数据表创建成功
crate table sch01.t01(id int,name varchar(100));插入指定模式的表的数据
手工插入
插入sch01模式中的t01表数据
insert into sch01.t01 values (1,admin);可以看见插入数据成功 可以看见这个t01表的模式是sch01 关联查询语句插入
insert into sch01.t01 select * from exam.student;修改模式属性所属者
alter schema schema01 owner to u01;模式路径
金仓数据库有默认模式路径如果不指定模式查询默认使用模式路径下的。
show search_path;查看当前用户名\echo :USER 查看USER变量 \dn 查看oa数据库中存在的模式可以发现并没有存在system模式 指定搜索路径
set search_patch sch01可以发现查询sch01的t01表不需要指定sch01模式因为搜索路径自动搜索了