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
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.
Excelente conteúdo para gente como eu, que ainda sou intermediário em BANCO DE DADOS…