OushuDB 创建和管理模式(上)

简介: 一个OushuDB数据库集群包含一个或多个已命名数据库。 用户和用户组在整个集群范围内是共享的,但是其它数据并不共享。 任何与服务器连接的客户都只能访问那个在连接请求里声明的数据库。

image.png

一个OushuDB数据库集群包含一个或多个已命名数据库。 用户和用户组在整个集群范围内是共享的,但是其它数据并不共享。 任何与服务器连接的客户都只能访问那个在连接请求里声明的数据库。

Note
集群中的用户并不一定要有访问集群内所有数据库的权限。共享用户名的意思是不能有重名用户。 假定同一个集群里有两个数据库和一个joe用户,系统可以配置成只允许joe 访问其中的一个数据库。

一个数据库包含一个或多个已命名的模式,模式又包含表。模式还可以包含其它对象, 包括数据类型、函数、操作符等。同一个对象名可以在不同的模式里使用而不会导致冲突; 比如,schema1和myschema都可以包含一个名为mytable的表。 和数据库不同,模式不是严格分离的:只要有权限,一个用户可以访问他所连接的数据库中的任意模式中的对象。

我们需要模式的原因有很多:

● 允许多个用户使用一个数据库而不会干扰其它用户。
● 把数据库对象组织成逻辑组,让它们更便于管理。
● 第三方的应用可以放在不同的模式中,这样它们就不会和其它对象的名字冲突。
模式类似于操作系统层次的目录,只不过模式不能嵌套。

1、创建模式

要创建一个模式,使用CREATE SCHEMA命令。给出你选择的模式名字。比如:

CREATE SCHEMA myschema;

要创建或者访问在模式中的对象,写出一个 受修饰 的名字,这个名字包含模式名以及表名, 它们之间用一个句点分开:

schema.table

这个方式在任何需要表名字的地方都可用,包括后面讨论的表修改命令和数据访问命令。出于简化,我们将只讨论表,这个概念适用于所有其它已命名对象类型,比如数据类型和函数。
实际上,更一般的语法:

database.schema.table

也可以使用,但目前它只是为了和 SQL 标准 形式上 兼容。如果你写了一个数据库名, 那么它必须和你当前连接的数据库同名。
要在新模式里创建一个表,用:

CREATE TABLE myschema.mytable (...);

如果一个模式是空的(所有它里面的对象都已经删除),那么删除它的命令如下:

DROP SCHEMA myschema;

要删除一个模式及其包含的所有对象,可以使用:

DROP SCHEMA myschema CASCADE;

通常你想创建一个他人拥有的模式(因为这是一种限制用户在定义良好的模式中的活动的方法)。其语法如下:

CREATE SCHEMA schemaname AUTHORIZATION username;

你甚至可以省略模式名字,这时模式名将和用户名同名。参阅 使用方法 获取这种情况的适用场合。
以pg_开头的模式名是保留给系统使用的,用户不能创建这样的名字。

2、public模式

在前面的小节里,我们没有声明任何模式名字就创建了表。缺省时, 这样的表(以及其它对象)都自动放到一个叫做”public”的模式中去了。 每个新数据库都包含一个这样的模式。因此,下面的命令是等效的:

CREATE TABLE products ( ... );

和:

CREATE TABLE public.products ( ... );

下面是系统默认创建的schema。

template1=# \dnList of schemasName        |  Owner--------------------+----------hawq_toolkit       | ChangLeiinformation_schema | ChangLeipg_aoseg           | ChangLeipg_bitmapindex     | ChangLeipg_catalog         | ChangLeipg_toast           | ChangLeipublic             | ChangLei(7 rows)
目录
相关文章
|
网络安全 图形学 Android开发
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
|
Web App开发 .NET
将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1.3X
在上一篇文章ASP.Net Core 运行错误 Http Error 502.5 解决办法的最后有提到说,最推荐的升级办法是从2.0升级到2.1X版本. 操作如下 项目的例子直接使用https://github.com/52ABP/52ABP.School 作为对象,毕竟他正好是.NET CORE 2.0的版本。
1544 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1020 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1714 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
658 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
620 12