乐趣区

关于oushudb-hawq:OushuDB-产品介绍基本的模式

一个数据库蕴含多个模式(schema),而一个模式能够蕴含多种命名对象,比方表,数据类型,函数,操作符等。同一个对象名字能够用在不同的模式中而不产生抵触。比方 schema1 中能够蕴含表 test,schema2 中也能够同时蕴含名字为 test 的表。从这个意义上,模式很像一个命名空间(namespace)。

当创立一个对象时,默认被搁置在 public 模式中。上面是零碎默认创立的 schema。

template1=# \dn
       List of schemas
        Name        |  Owner
--------------------+----------
 hawq_toolkit       | ChangLei
 information_schema | ChangLei
 pg_aoseg           | ChangLei
 pg_bitmapindex     | ChangLei
 pg_catalog         | ChangLei
 pg_toast           | ChangLei
 public             | ChangLei
(7 rows)

通常在这样几个场景下,用户须要应用模式:
● 容许多个用户同时应用一个数据库,而不产生名字抵触。
● 把数据库对象组织成多个 schema,如同是多个命名空间一样
● 第三方利用能够把它们的对象放到一个独自的 schema 中,而不和其余对象产生从图。
留神:schema 不能够嵌套,也就是说,schema 中不能够再蕴含 schema。
上面是创立 schema 的例子。

create schema myschema;

创立或者存取一个 schema 中的对象,能够应用 {schema}.{object} 模式,例如:

create table myschema.test(i int);
select * from myschema.test;

删除一个空的 schema,能够应用:

drop schema myschame;

删除不空的 schema,能够应用 cascade 关键词:

drop schema myschema cascade;

应用 {schema}.{object} 模式,通常用起来不是很不便。能够通过设置 schema 搜寻门路来简化。”SHOW search_path”命令能够给出以后的 schema 搜寻门路。”SET search_path TO schema-name1, schema-name2”能够设置 schema 搜寻门路。例如:

postgres=# show search_path;
  search_path
----------------
 "$user",public
(1 row)

postgres=# create schema myschema;
CREATE SCHEMA

postgres=# set search_path = public, myschema;
SET

postgres=# show search_path;
   search_path
------------------
 public, myschema
(1 row)
退出移动版