CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]
CREATE SCHEMA 将在当前数据库里输入一个新的模式. 该模式名将在当前数据库里现存的所有模式名中唯一.
模式实际上是一个名字空间∶它包含命名对象(表,数据类型,函数和操作符) 这些名字可以和其它模式里存在的其它对象重名.命名对象要么是通过 用模式名作为前缀"修饰"这些它们的名字进行访问,要么是通过设置一个 搜索路径包含所需要的模式.没有修饰的对象是在当前模式中创建的 (那个在搜索路径前面的,参阅 CURRENT_SCHEMA())。
另外,CREATE SCHEMA 可以包括在新模式中 创建对象的子命令.这些子命令和那些在创建完模式后发出的命令没有 任何区别,只不过是如果使用了 AUTHORIZATION 子句, 那么所有创建的对象都将被该用户拥有.
创建一个模式∶
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;