INSERT INTO tabela [ ( coluna [, ...] ) ]
{ DEFAULT VALUES | VALUES ( expressão [, ...] ) | SELECT consulta }
O nome de uma tabela existente.
O nome de uma coluna da tabela.
Todas as colunas são preenchidas com nulo, ou pelos valores especificados quando a tabela é criada usando a cláusula DEFAULT.
Uma expressão ou valor válido a ser atribuído à coluna.
Uma consulta válida. Consulte o comando SELECT para obter uma descrição mais detalhada dos argumentos válidos.
O comando INSERT permite a inclusão de novas linhas na tabela. Pode ser incluída uma linha de cada vez, ou várias linhas como o resultado de uma consulta. As colunas da lista de inserção podem estar em qualquer ordem.
As colunas que não aparecem na lista de inserção são incluídas utilizando o valor padrão, seja o valor DEFAULT declarado, ou nulo. O PostgreSQL rejeita a nova coluna se um valor nulo for incluído em uma coluna declarada como NOT NULL.
Se a expressão para cada coluna não for do tipo de dado correto, será tentada uma conversão automática de tipo.
É necessário possuir o privilégio INSERT na tabela para inserir linhas, assim como o privilégio SELECT nas tabelas especificadas na cláusula WHERE.
Inserir uma única linha na tabela filmes:
INSERT INTO filmes VALUES
('UA502','Bananas',105,'1971-07-13','Comédia',INTERVAL '82 minute');
No segundo exemplo, mostrado abaixo, a última coluna duração foi omitida e, portanto, vai receber o valor padrão NULL:
INSERT INTO filmes (codigo, titulo, did, data_prod, tipo)
VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
Inserir uma única linha na tabela distribuidores; observe que somente a coluna nome está especificada, portanto vai ser atribuído o valor padrão para a coluna did que foi omitida:
INSERT INTO distribuidores (nome) VALUES ('Entrega Rápida');
Inserir várias linhas na tabela filmes a partir da tabela tmp:
INSERT INTO filmes SELECT * FROM tmp;
Inclusão em arrays (Consulte o Guia do Usuário do PostgreSQL para obter mais informações sobre arrays):
-- Criar um tabuleiro vazio de 3x3 posições para o Jogo da Velha
-- (todos 3 comandos criam o mesmo atributo do tabuleiro)
INSERT INTO tictactoe (game, board[1:3][1:3])
VALUES (1,'{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (game, board[3][3])
VALUES (2,'{}');
INSERT INTO tictactoe (game, board)
VALUES (3,'{{,,},{,,},{,,}}');
O comando INSERT é totalmente compatível com o SQL92. As possíveis limitações nas funcionalidades da cláusula de consulta estão documentadas no comando SELECT.