Bóson Treinamentos em Ciência e Tecnologia

Como criar tabelas com CREATE TABLE no PostgreSQL

Como criar tabelas com comando 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:

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

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

 

 

Sair da versão mobile