Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL INSERT

A instrução `INSERT` no PostgreSQL é usada para adicionar novas linhas de dados em uma tabela especificada. É uma operação fundamental para preencher e atualizar bancos de dados com novas informações.

Uso

A sintaxe básica da instrução `INSERT` é usada quando você precisa adicionar novos registros a uma tabela. Ele especifica o nome da tabela, as colunas nas quais você deve inserir dados e os valores correspondentes.

sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Nessa sintaxe, `nome_da_tabela` é a tabela de destino, `coluna1, coluna2, ...` são as colunas que receberão os dados e `valor1, valor2, ...` são os valores de dados reais a serem inseridos.

Exemplos

1. Inserção básica

sql
INSERT INTO employees (first_name, last_name, email)
VALUES ('John', 'Doe', 'john.doe@example.com');

Este exemplo insere uma única linha na tabela `employees` com valores para `first_name`, `last_name` e `email`.

2. Inserir várias linhas

sql
INSERT INTO products (product_name, price)
VALUES 
('Product A', 10.99),
('Product B', 15.49);

Aqui, duas linhas são inseridas na tabela `products` em uma instrução, cada uma com um `product_name` e um `price`.

3. Inserir com subconsulta

sql
INSERT INTO sales (product_id, quantity)
SELECT product_id, 5
FROM products
WHERE product_name = 'Product C';

Este exemplo insere dados na tabela `sales` selecionando `product_id` da tabela `products` em que o `product_name` é 'Product C', definindo a `quantity` como 5.

4. Manuseio de duplicatas com ON CONFLICT

sql
INSERT INTO users (username, email)
VALUES ('jane_doe', 'jane.doe@example.com')
ON CONFLICT (username) DO UPDATE 
SET email = EXCLUDED.email;

Este exemplo demonstra como você pode lidar com possíveis duplicatas atualizando o `email` se o `username` já existir na tabela `users`.

5. Usando a cláusula RETURNING

sql
INSERT INTO orders (customer_id, order_date)
VALUES (123, '2023-10-11')
RETURNING order_id;

A cláusula `RETURNING` é usada para retornar o `order_id` da linha recém-inserida, o que é especialmente útil com campos de incremento automático.

Dicas e práticas recomendadas

  • Especifique as colunas explicitamente. Sempre liste as colunas em uma instrução `INSERT` para garantir a clareza e manter a compatibilidade se a estrutura da tabela mudar.
  • Validar tipos de dados. Certifique-se de que os valores que estão sendo inseridos correspondam aos tipos de dados das colunas.
  • Use transações para inserções em massa. Envolva várias operações `INSERT` em uma transação para garantir a atomicidade e melhorar o desempenho. Por exemplo:
    sql
            BEGIN;
            INSERT INTO products (product_name, price) VALUES ('Product C', 12.99);
            INSERT INTO products (product_name, price) VALUES ('Product D', 18.49);
            COMMIT;
            
  • Lidar com duplicatas. Use `ON CONFLICT` para lidar com possíveis conflitos de chaves, e não `INSERT ... ON DUPLICATE KEY UPDATE`, que é a sintaxe do MySQL.
  • Utilize as subconsultas com sabedoria. Utilize subconsultas para inserção dinâmica de dados de outras tabelas para manter a integridade e a consistência dos dados.