CREATE SCHEMA(7) | SQL Commands | CREATE SCHEMA(7) |
CREATE SCHEMA - 定义一个新的模式
CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]
CREATE SCHEMA 将在当前数据库里输入一个新的模式。 该模式名将在当前数据库里现存的所有模式名中唯一。
模式实际上是一个名字空间:
它包含命名对象(表,数据类型,函数和操作符)这些名字可以和其它模式里存在的其它对象重名。
命名对象要么是通过用模式名作为前缀"修饰"这些它们的名字进行访问,
要么是通过设置一个搜索路径包含所需要的模式。
无修饰的对象都是在当前模式中创建的(在搜索路径最前面的;可以用函数
current_schema 来判断)。
另外,CREATE SCHEMA
可以包括在新模式中创建对象的子命令。
这些子命令和那些在创建完模式后发出的命令没有任何区别,只不过是如果使用了
AUTHORIZATION 子句,
那么所有创建的对象都将被该用户拥有。
要创建模式,调用该命令的用户必需在当前数据库上有 CREATE 权限。(当然,超级用户绕开这个检查。)
创建一个模式:
CREATE SCHEMA myschema;
为用户 joe 创建模式 ---
模式也会叫 joe:
CREATE SCHEMA AUTHORIZATION joe;
创建一个模式并且在里面创建一个表:
CREATE SCHEMA hollywood
CREATE TABLE films (title text, release date, awards text[])
CREATE VIEW winners AS
SELECT title, release FROM films WHERE awards IS NOT NULL;
下面的命令是实现同样结果的等效语句:
CREATE SCHEMA hollywood; CREATE TABLE hollywood.films (title text, release date, awards text[]); CREATE VIEW hollywood.winners AS
SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;
SQL 标准允许在 CREATE SCHEMA 里面有一个 DEFAULT CHARACTER SET 子句,以及比目前 PostgreSQL 可以接受的更多的子命令。
SQL 标准声明在 CREATE SCHEMA
里的子命令可以以任意顺序出现。
目前 PostgreSQL
里的实现还不能处理所有子命令里需要提前引用的情况;有时候可能需要重排一下子命令的顺序以避免前向引用。
在 SQL
标准里,模式的所有者总是拥有其中的所有对象。
PostgreSQL
允许模式包含非模式所有者所有的对象。
只有在模式所有者 CREATE
了自己的模式的权限给了其它人才可能出现。
ALTER SCHEMA [alter_schema(7)], DROP SCHEMA [drop_schema(l)]
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |