CREATE SCHEMA
CREATE SCHEMA -- define um novo schema.
Sintaxe
CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [ schema_element [ ... ] ]
CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]
Descrição
CREATE SCHEMA cria um novo "schema" no banco de dados atual. O nome do "schema" deve ser distinto do nome de qualquer "schema" existente no banco de dados atual.
Um "schema" é essencialmente um espaço de nomes: contém objetos nomeados (tabelas, tipos de dados, funções e operadores), cujos nomes podem ser duplicados em relação aos de outros objetos existentes em outros "schemas". Objetos nomeados são acessados "qualificando" seus nomes de acordo com o nome do "schema" como prefixo, ou definindo um caminho de pesquisa que inclui o "schema" desejado.
Um "schema" é essencialmente um espaço de nomes: contém objetos nomeados (tabelas, tipos de dados, funções e operadores), cujos nomes podem ser duplicados em relação aos de outros objetos existentes em outros "schemas". Objetos nomeados são acessados "qualificando" seus nomes de acordo com o nome do "schema" como prefixo, ou definindo um caminho de pesquisa que inclui o "schema" desejado.
Um comando CREATE especificando um nome de objeto não qualificado cria o objeto no "schema" corrente (aquele na frente do caminho de procura, que pode ser determinado com a função "current_schema").
Opcionalmente, CREATE SCHEMA pode incluir subcomandos para criar objetos dentro do novo esquema. Os subcomandos são tratados essencialmente como os mesmos que os comandos executados após a criação do esquema, exceto que, se a cláusula AUTHORIZATION for usada, todos os objetos criados será detida por esse usuário.
Opcionalmente, CREATE SCHEMA pode incluir subcomandos para criar objetos dentro do novo esquema. Os subcomandos são tratados essencialmente como os mesmos que os comandos executados após a criação do esquema, exceto que, se a cláusula AUTHORIZATION for usada, todos os objetos criados será detida por esse usuário.
Parâmetros
schema_name: O nome de um "schema" a ser criado. Se for omitido, o "user_name" é usado como o nome do esquema. O nome não pode começar com "pg_", porque estes nomes são reservados para os esquemas do sistema.
user_name: O nome do papel do usuário que será o dono do novo "schema". Se omitido, o padrão é o usuário executador do comando. Para criar um "schema" de propriedade de um outro papel, você deve ser um membro direto ou indireto deste papel, ou ser um super-usuário.
schema_element: Uma instrução SQL que define um objeto a ser criado dentro do "schema". Atualmente, apenas CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER e GRANT são aceitos como cláusulas dentro do CREATE SCHEMA. Outros tipos de objetos podem ser criados em comandos separados após a criação do "schema".
IF NOT EXISTS: Não faz nada (exceto a emissão de um aviso prévio), se um "schema" com o mesmo nome já existe. subcomando "schema_element" não pode ser incluído quando essa opção for usada.
schema_name: O nome de um "schema" a ser criado. Se for omitido, o "user_name" é usado como o nome do esquema. O nome não pode começar com "pg_", porque estes nomes são reservados para os esquemas do sistema.
user_name: O nome do papel do usuário que será o dono do novo "schema". Se omitido, o padrão é o usuário executador do comando. Para criar um "schema" de propriedade de um outro papel, você deve ser um membro direto ou indireto deste papel, ou ser um super-usuário.
schema_element: Uma instrução SQL que define um objeto a ser criado dentro do "schema". Atualmente, apenas CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER e GRANT são aceitos como cláusulas dentro do CREATE SCHEMA. Outros tipos de objetos podem ser criados em comandos separados após a criação do "schema".
IF NOT EXISTS: Não faz nada (exceto a emissão de um aviso prévio), se um "schema" com o mesmo nome já existe. subcomando "schema_element" não pode ser incluído quando essa opção for usada.
Notas
Para criar um "schema", o usuário de chamada deve ter o privilégio CREATE para o banco de dados atual. (É claro que os super-usuários ignoram esta verificação.)
Examplos
Cria um "schema":
CREATE SCHEMA myschema;
Criar um "schema" para o usuário joe; o "schema" também será chamado joe:
CREATE SCHEMA AUTHORIZATION joe;Criar um "schema" chamado "test" que será propriedade do usuário joe, a menos que já exista um "schema" chamado de "test". (Não importa se joe possui um "schema" pré-existente.)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
Criar um "schema" e uma tabela, e ver o seu conteúdo:
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;
Observe que os subcomandos individuais não terminam com ponto e vírgula.
Examplos
Cria um "schema":
CREATE SCHEMA myschema;
Criar um "schema" para o usuário joe; o "schema" também será chamado joe:
CREATE SCHEMA AUTHORIZATION joe;Criar um "schema" chamado "test" que será propriedade do usuário joe, a menos que já exista um "schema" chamado de "test". (Não importa se joe possui um "schema" pré-existente.)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
Criar um "schema" e uma tabela, e ver o seu conteúdo:
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;
Observe que os subcomandos individuais não terminam com ponto e vírgula.
O que segue é uma forma equivalente para se obter o mesmo resultado: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;
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;
Compatibilidade
O padrão SQL permite que a cláusula DEFAULT CHARACTER SET em CREATE SCHEMA, bem como mais tipos de subcomandos do que são atualmente aceitos pelo PostgreSQL.
O padrão SQL especifica que os sub-comandos em CREATE SCHEMA podem aparecer em qualquer ordem. A implementação atual do PostgreSQL não trata todos os casos de referências à frente nos sub-comandos; ele pode por vezes ser necessário para reordenar os sub-comandos, a fim de evitar referências à frente.
De acordo com o padrão SQL, o proprietário de um "schema" sempre possui todos os objetos dentro dela. PostgreSQL permite que os "schemas" contenham objetos pertencentes a outros usuários além dos do proprietário do "schema". Isso só pode acontecer se o proprietário do "schema" conceder o privilégio CREATE para o seu "schema" para outra pessoa, ou um super-usuário escolhe para criar objetos nele.
A opção IF NOT EXISTS é uma extensão do PostgreSQL.
O padrão SQL permite que a cláusula DEFAULT CHARACTER SET em CREATE SCHEMA, bem como mais tipos de subcomandos do que são atualmente aceitos pelo PostgreSQL.
O padrão SQL especifica que os sub-comandos em CREATE SCHEMA podem aparecer em qualquer ordem. A implementação atual do PostgreSQL não trata todos os casos de referências à frente nos sub-comandos; ele pode por vezes ser necessário para reordenar os sub-comandos, a fim de evitar referências à frente.
De acordo com o padrão SQL, o proprietário de um "schema" sempre possui todos os objetos dentro dela. PostgreSQL permite que os "schemas" contenham objetos pertencentes a outros usuários além dos do proprietário do "schema". Isso só pode acontecer se o proprietário do "schema" conceder o privilégio CREATE para o seu "schema" para outra pessoa, ou um super-usuário escolhe para criar objetos nele.
A opção IF NOT EXISTS é uma extensão do PostgreSQL.
Atenção
A intensão deste post é dar suporte às citações de comandos existentes neste blog sobdemanda.blogspot.com, no idioma Português Brasil, não tendo em nenhuma hipótese o objetivo de substituiur qualquer documentação oficial existente para o SGBD PostgreSQL.
Fonte
0 comentários:
Postar um comentário