PostgreSQL - Esquema

UMA schemaé uma coleção nomeada de tabelas. Um esquema também pode conter visualizações, índices, sequências, tipos de dados, operadores e funções. Os esquemas são análogos aos diretórios no nível do sistema operacional, exceto que os esquemas não podem ser aninhados. A instrução CREATE SCHEMA do PostgreSQL cria um esquema.

Sintaxe

A sintaxe básica de CREATE SCHEMA é a seguinte -

CREATE SCHEMA name;

Onde nome é o nome do esquema.

Sintaxe para criar uma tabela no esquema

A sintaxe básica para criar uma tabela no esquema é a seguinte -

CREATE TABLE myschema.mytable (
...
);

Exemplo

Vejamos um exemplo de criação de um esquema. Conecte-se ao banco de dados testdb e crie um esquema meu esquema da seguinte maneira -

testdb=# create schema myschema;
CREATE SCHEMA

A mensagem "CREATE SCHEMA" significa que o esquema foi criado com sucesso.

Agora, vamos criar uma tabela no esquema acima da seguinte maneira -

testdb=# create table myschema.company(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

Isso criará uma mesa vazia. Você pode verificar a tabela criada com o comando fornecido abaixo -

testdb=# select * from myschema.company;

Isso produziria o seguinte resultado -

id | name | age | address | salary
----+------+-----+---------+--------
(0 rows)

Sintaxe para eliminar o esquema

Para eliminar um esquema se ele estiver vazio (todos os objetos nele foram eliminados), use o comando -

DROP SCHEMA myschema;

Para eliminar um esquema incluindo todos os objetos contidos, use o comando -

DROP SCHEMA myschema CASCADE;

Vantagens de usar um esquema

  • Ele permite que muitos usuários usem um banco de dados sem interferir uns nos outros.

  • Ele organiza objetos de banco de dados em grupos lógicos para torná-los mais gerenciáveis.

  • Os aplicativos de terceiros podem ser colocados em esquemas separados para que não entrem em conflito com os nomes de outros objetos.