Como criar tabelas com CREATE TABLE no PostgreSQL

Comando CREATE TABLE no PostgreSQL

O comando SQL CREATE TABLE é utilizado para definir uma nova tabela, inicialmente vazia (sem nenhum registro), no esquema de banco de dados atual. A tabela criada pertence ao usuário que executa o comando (usuário logado).

É possível especificar um esquema diferente do esquema atual para a criação da tabela, bastando para isso identificar o esquema junto ao nome desejado para a tabela (separado por um ponto .), usando uma sintaxe do tipo nome_esquema.nome_tabela.

Vejamos a sintaxe básica para a criação de uma tabela no postgres:

Sintaxe básica:

CREATE TABLE [IF NOT EXISTS] nome_tabela (
  nome_coluna tipo_dados [COLLATE colação] constraint,
  nome_coluna tipo_dados constraint,
  nome_coluna tipo_dados constraint,
  ...,
[FOREIGN KEY chave_estrangeira REFERENCES coluna]
[ON DELETE ação ] [ ON UPDATE ação ]
)

Se não for usada a opção COLLATE, a colação padrão será utilizada.

Os itens entre colchetes [ ] são opcionais na criação de uma tabela.
A cláusula IF NOT EXISTS verifica se a tabela com o nome especificado já existe antes de tentar criá-la.
As constraints (testes) possíveis para colunas são:

  • NOT NULL
  • NULL (padrão)
  • CHECK
  • DEFAULT
  • UNIQUE
  • PRIMARY KEY
  • REFERENCES

E as constraints específicas para tabelas são:

  • CHECK
  • UNIQUE
  • PRIMARY KEY
  • EXCLUDE (extensão específica do PostgreSQL)
  • FOREIGN KEY

Existem na verdade duas formas de definir constraints. É possível definir contraints de coluna e constraints de tabela.
Uma constraint de coluna é definida como parte da definição da coluna em si. Já uma constraint de tabela não é vinculada a nenhuma coluna em particular, e pode ser aplicada a mais de uma coluna ao mesmo tempo.
Para se aprofundar no conceito de constraints, leia o artigo Constraints no PostgreSQL.

Vamos aos exemplos de criação de tabelas no PostgreSQL:

Exemplo

Vamos criar uma tabela de nome tbl_autores, que irá conter os campos ID_Autor, Nome_Autor, Sobren_Autor e Data_Nasc:

CREATE TABLE tbl_autores (
 ID_Autor integer CONSTRAINT pk_id_autor PRIMARY KEY,
 Nome_Autor varchar(30) NOT NULL, 
 Sobren_Autor varchar(40) NOT NULL,
 Data_Nasc date
);

Exemplo 2

Agora iremos criar a tabela de editoras, com os campos ID_Editora e Nome_Editora:

CREATE TABLE tbl_editoras (
 ID_Editora integer CONSTRAINT pk_id_editora PRIMARY KEY,
 Nome_Editora varchar(35) UNIQUE NOT NULL,
);

Exemplo 3

Vamos criar também uma tabela para armazenar os gêneros literários:

CREATE TABLE tbl_generos (
 ID_Genero integer CONSTRAINT pk_id_genero PRIMARY KEY,
 Nome_Genero varchar(40) NOT NULL,
 UNIQUE(Nome_Genero)
);

Exemplo 4

Finalmente, vamos criar a tabela de livros, incluindo os relacionamentos com as demais tabelas por meio do uso de chaves estrangeiras:

CREATE TABLE tbl_livros (
 ID_Livro integer CONSTRAINT pk_id_livro PRIMARY KEY,
 Nome_Livro varchar(50) NOT NULL,
 Autor integer NOT NULL,
 Editora integer NOT NULL,
 Data_Publ date,
 Genero integer NOT NULL,
 Preco_Livro money,
 FOREIGN KEY (Autor) REFERENCES tbl_autores (ID_Autor) ON DELETE CASCADE,
 FOREIGN KEY (Editora) REFERENCES tbl_editoras (ID_Editora) ON DELETE CASCADE,
 FOREIGN KEY (Genero) REFERENCES tbl_generos (ID_Genero) ON DELETE CASCADE
);

Após criar as tabelas podemos descrevê-las individualmente com o comando \d, como segue:
\d nome_tabela

\d tbl_livros
\d tbl_autores
\d tbl_editoras
\d tbl_generos

É isso aí! Nesta lição mostramos como criar tabelas (e relacionamentos entre elas) usado o postgres. Na próxima lição vamos mostrar como alterar uma tabela já criada no sistema.

Anterior: Constraints em PostgreSQL

Próximo: Como alterar tabelas no PostgreSQL

 

 

Sobre Fábio dos Reis (1193 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*