CREATE SCHEMA nome_do_esquema [ AUTHORIZATION nome_do_usuário ] [ elemento_do_esquema [ ... ] ] CREATE SCHEMA AUTHORIZATION nome_do_usuário [ elemento_do_esquema [ ... ] ]
O comando CREATE SCHEMA cria um esquema no banco de dados corrente. O nome do esquema deve ser distinto do nome de todos os outros esquemas existentes no banco de dados corrente. [1] [2] [3]
Um esquema é essencialmente um espaço de nomes: contém objetos com nome (tabelas, tipos de dado, funções e operadores), cujos nomes podem ser iguais aos de outros objetos existentes em outros esquemas. Os objetos com nome são acessados "qualificando" seus nomes usando o nome do esquema como prefixo, ou definindo um caminho de procura que inclua os esquemas desejados. O comando CREATE que especifica um nome de objeto não qualificado cria o objeto no esquema corrente (o primeiro do caminho de procura, que pode ser determinado pela função current_schema [4] ).
Opcionalmente, o comando CREATE SCHEMA pode incluir subcomandos para criar objetos no novo esquema. Estes subcomandos são tratados, essencialmente, da mesma maneira como são tratados os comandos em separado submetidos após a criação do esquema, exceto que, se for utilizada a cláusula AUTHORIZATION, todos os objetos criados pertencerão a este usuário.
O nome do esquema a ser criado. Se for omitido, será usado o nome do usuário como nome do esquema. O nome não pode começar por pg_, porque estes nomes são reservados para os esquemas do sistema.
O nome do usuário que será o dono do esquema. Se for omitido, tem como padrão o usuário que está executando o comando. Somente os superusuários podem criar esquemas pertencentes a outros usuários.
Um comando SQL definindo um objeto a ser criado no esquema. Atualmente, somente CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER e GRANT são aceitos como cláusula no comando CREATE SCHEMA. Os objetos de outros tipos podem ser criados por comandos em separado, após o esquema ter sido criado.
Para criar um esquema o usuário deve possuir o privilégio CREATE no banco de dados corrente (É claro que os superusuários não são afetados por esta exigência).
Criar um esquema:
CREATE SCHEMA meu_esquema;
Criar um esquema para o usuário antonio; o esquema também se chamará antonio:
CREATE SCHEMA AUTHORIZATION antonio;
Criar um esquema e criar uma tabela e uma visão nele:
CREATE SCHEMA hollywood CREATE TABLE filmes (titulo text, lancamento date, premios text[]) CREATE VIEW premiados AS SELECT titulo, lancamento FROM filmes WHERE premios IS NOT NULL;
Deve ser observado que os subcomandos individuais não terminam por ponto-e-vírgula.
Abaixo está mostrada uma forma equivalente para se obter o mesmo resultado:
CREATE SCHEMA hollywood; CREATE TABLE hollywood.filmes (titulo text, lancamento date, premios text[]); CREATE VIEW hollywood.premiados AS SELECT titulo, lancamento FROM hollywood.filmes WHERE premios IS NOT NULL;
O padrão SQL permite a cláusula DEFAULT CHARACTER SET no comando CREATE SCHEMA, bem como mais tipos de subcomandos que os aceitos atualmente pelo PostgreSQL.
O padrão SQL especifica que os subcomandos presentes em CREATE SCHEMA podem estar em qualquer ordem. A implementação atual do PostgreSQL não trata todos os casos de referência à frente nos subcomandos; alguma vezes pode ser necessário reordenar os subcomandos para evitar referências à frente.
De acordo com o padrão SQL, o dono do esquema sempre possui todos os objetos que este contém. O PostgreSQL permite que os esquemas contenham objetos pertencentes a outros usuários. Isto só acontece quando o dono do esquema concede o privilégio CREATE em seu esquema para algum outro usuário.
[1] |
Oracle — O comando CREATE SCHEMA é utilizado para criar várias tabelas e visões e realizar várias concessões em seu próprio esquema em uma única transação. Para executar o comando CREATE SCHEMA o SGBD Oracle executa cada um dos comandos incluídos. Se a execução de todos os comandos for bem-sucedida, então o SGBD efetiva a transação. Se algum comando resultar em erro, então o SGBD desfaz todos os comandos. Nota: Na verdade este comando não cria um esquema. O SGBD Oracle cria automaticamente um esquema quando é criado um usuário. O nome do esquema deve ser o mesmo nome de usuário do SGBD Oracle. Este comando permite preencher seu esquema com tabelas e visões e conceder privilégios para estes objetos sem ter que utilizar vários comandos SQL em várias transações. Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (N. do T.) |
[2] |
SQL Server — O comando CREATE SCHEMA pode criar o esquema, as tabelas e visões que este contém, e conceder, revogar e negar permissões para qualquer securable em um único comando. Este comando deve ser executado como um lote em separado. Os objetos criados pelo comando CREATE SCHEMA são criados dentro do esquema que está sendo criado. As transações CREATE SCHEMA são atômicas. Se ocorrer algum erro durante a execução do comando CREATE SCHEMA, não será criado nenhum dos securables especificados e não será concedida nenhuma permissão. Os securables a serem criados no comando CREATE SCHEMA podem ser listados em qualquer ordem, exceto pelas visões que fazem referência a outras visões. Neste caso, a visão referenciada deverá ser criada antes da visão que faz referência a mesma. Portanto, o comando GRANT pode conceder permissão para um objeto antes do objeto ser criado, e o comando CREATE VIEW pode aparecer antes dos comandos CREATE TABLE que criam as tabelas referenciadas pela visão. Também, os comandos CREATE TABLE podem declarar chaves estrangeiras para tabelas definidas mais tarde no comando CREATE SCHEMA. SQL Server 2005 Books Online — CREATE SCHEMA (Transact-SQL) (N. do T.) |
[3] |
DB2 — Criando esquemas — Ao se organizar os dados em tabelas, também pode ser benéfico colocar as tabelas e outros objetos relacionados juntos. Isto é feito definindo um esquema através do uso do comando CREATE SCHEMA. As informações sobre o esquema são mantidas nas tabelas do catálogo do sistema do banco de dados ao qual se está conectado. À medida que outros objetos são criados, poderão ser colocados neste esquema. Os esquemas também podem ser criados implicitamente quando o usuário possui a autoridade IMPLICIT_SCHEMA. Com esta autoridade, os usuários criam implicitamente um esquema sempre que criam um objeto com um nome de esquema que ainda não existe. Não são permitidos acessos não qualificados aos objetos no esquema, uma vez que o esquema é utilizado para impor a unicidade no banco de dados. Isto fica claro ao se considerar a possibilidade de dois usuários poderem criar duas tabelas (ou outros objetos) com o mesmo nome. Sem um esquema para impor a unicidade, existiria ambigüidade se um terceiro usuário tentasse consultar a tabela. Não seria possível determinar a tabela a ser utilizada sem mais qualificação. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.) |
[4] |
Use o comando SELECT current_schema(); (N. do T.) |