Capítulo 6. Manipulação de dados

PostgreSQL 14.5: Manipulação de dados

Sumário
6.1. Inserção de dados
6.2. Atualização de dados
6.3. Exclusão de dados

O capítulo anterior mostrou como criar tabelas e outras estruturas para armazenar dados. Agora está na hora de preencher as tabelas com dados. Este capítulo mostra como inserir, atualizar e excluir dados em tabelas. Também são apresentadas maneiras de efetuar mudanças automáticas nos dados quando ocorrem certos eventos: gatilhos (triggers) e regras de reescrita (rewrite rules). Para completar, o próximo capítulo explica como fazer consultas para extrair dados do banco de dados.

6.1. Inserção de dados

A tabela recém-criada não contém dados. A primeira ação a ser realizada para o banco de dados ter utilidade é inserir dados. Conceitualmente, os dados são inseridos uma linha de cada vez. É claro que é possível inserir mais de uma linha, mas não existe maneira de inserir menos de uma linha por vez. Mesmo que se conheça apenas o valor de algumas colunas, deve ser criada uma linha completa.

Para criar uma linha é utilizado o comando INSERT. Este comando requer o nome da tabela, e um valor para cada coluna da tabela. Por exemplo, considere a tabela produtos do Capítulo 5:

CREATE TABLE produtos (
    cod_prod   integer,
    nome       text,
    preco      numeric
);

Um exemplo de comando para inserir uma linha é:

INSERT INTO produtos VALUES (1, 'Queijo', 9.99);

Os valores dos dados são colocados na mesma ordem que as colunas se encontram na tabela, separados por vírgula. Geralmente os valores dos dados são literais (constantes), mas também são permitidas expressões escalares.

A sintaxe mostrada acima tem como desvantagem ser necessário conhecer a ordem das colunas da tabela. Para evitar isto, as colunas podem ser relacionadas explicitamente. Por exemplo, os dois comandos mostrados abaixo possuem o mesmo efeito do comando mostrado acima:

INSERT INTO produtos (cod_prod, nome, preco) VALUES (1, 'Queijo', 9.99);
INSERT INTO produtos (nome, preco, cod_prod) VALUES ('Queijo', 9.99, 1);

Muitos usuários consideram boa prática escrever sempre os nomes das colunas.

Se não forem conhecidos os valores de todas as colunas, as colunas com valor desconhecido podem ser omitidas. Neste caso, estas colunas são preenchidas com seu respectivo valor padrão. Por exemplo:

INSERT INTO produtos (cod_prod, nome) VALUES (1, 'Queijo');
INSERT INTO produtos VALUES (1, 'Queijo');

A segunda forma é uma extensão do PostgreSQL, que preenche as colunas a partir da esquerda com quantos valores forem fornecidos, e as demais com o valor padrão.

Para ficar mais claro, pode ser requisitado explicitamente o valor padrão da coluna individualmente, ou para toda a linha:

INSERT INTO produtos (cod_prod, nome, preco) VALUES (1, 'Queijo', DEFAULT);
INSERT INTO produtos DEFAULT VALUES;

Dica: Para realizar "cargas volumosas", ou seja, inserir muitos dados, consulte o comando COPY. Este comando não é tão flexível quanto o comando INSERT, mas é mais eficiente.

SourceForge.net Logo CSS válido!