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, 
 Sobrenome_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 SERIAL CONSTRAINT pk_id_livro PRIMARY KEY,
 Nome_Livro varchar(50) NOT NULL,
 Autor integer NOT NULL,
 Editora integer NOT NULL,
 Data_Pub 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
);

Note que usamos a palavra SERIAL ao criar a coluna ID_Livro, ou seja, estamos usando auto-incremento nesta coluna. Isso significa que os ids dos livros serão números gerados automaticamente pelo PostgreSQL, de modo que não precisaremos informar esse dado ao cadastrar os livros, o que faremos no próximo artigo. Além disso, não precisamos informar o tipo de dados desta coluna, visto que o auto-incremento é sempre realizado com números inteiros (integer).

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 (1192 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

2 Comentários em Como criar tabelas com CREATE TABLE no PostgreSQL

  1. Vinicius Bona // 09/05/2023 em 9:48 // Responder

    assim, eu não entendi muito sobre mas porem entre tudo toda via aprendi a criar tabelas com o postgresql, gostaria de deixar minhas humildes palavras para o administrador do grupo. Belo trabalho colegas de trabalho uma ótima semana a todos 09/05/2023.

  2. JOAO DOS SANTOS OLIVEIRA // 25/07/2023 em 15:11 // Responder

    Excelente conteúdo para gente como eu, que ainda sou intermediário em BANCO DE DADOS…

Escreva um comentário

Seu e-mail não será divulgado


*