tabela - LROCHA.com

Propaganda
BANCO DE DADOS WEB
AULA 12
manipulação de dados
atualização e exclusão de registros
professor Luciano Roberto Rocha
www.lrocha.com
Atualização de dados
A modificação dos dados armazenados no banco de dados é
referida como atualização.
Pode ser atualizada uma linha, todas as linhas, ou um
subconjunto das linhas da tabela. Uma coluna pode ser atualizada
separadamente; as outras colunas não são afetadas.
Para realizar uma atualização são necessárias três informações:
1. O nome da tabela e da coluna a ser atualizada;
2. O novo valor para a coluna;
3. Quais linhas serão atualizadas.
2
Atualização de dados
A linguagem SQL, de uma maneira geral, não fornece um
identificador único para as linhas.
Portanto, não é necessariamente possível especificar
diretamente a linha a ser atualizada. Em vez disso, devem ser
especificadas as condições que a linha deve atender para ser
atualizada.
Por exemplo, o comando mostrado abaixo atualiza todos os
produtos com preço igual a 5, mudando estes preços para 10:
UPDATE produtos SET preco = 10 WHERE preco = 5;
3
Atualização de dados
UPDATE: atualiza linhas de uma tabela.
Sinopse
UPDATE [ ONLY ] tabela SET coluna = { expressão |
DEFAULT } [, ...] [ FROM lista_do_from ] [ WHERE
condição ]
Descrição
O comando UPDATE muda os valores das colunas especificadas em
todas as linhas que satisfazem a condição. Somente precisam ser
mencionadas na cláusula SET as colunas que serão modificadas; as
colunas que não serão modificadas explicitamente manterão seus
valores atuais.
Por padrão, o comando UPDATE atualiza linhas na tabela especificada
e nas suas tabelas descendentes. Se for desejado atualizar apenas a
tabela especificada, deverá ser utilizada a cláusula ONLY.
4
Atualização de dados
Parâmetros
tabela
O nome (opcionalmente qualificado pelo esquema) da tabela a ser atualizada.
coluna O nome de uma coluna da tabela. O nome da coluna pode ser qualificado
pelo nome de um subcampo ou índice de matriz, se for necessário.
expressão
Uma expressão a ser atribuída à coluna. A expressão pode usar o valor antigo desta e
de outras colunas da tabela.
DEFAULT
Define o valor da coluna como o seu valor padrão (que será nulo se não tiver sido
atribuído à coluna nenhuma expressão padrão específica).
lista_do_from
Uma lista de expressões de tabela, que permite aparecerem colunas de outras
tabelas na condição WHERE e nas expressões de atualização. É semelhante à lista de
tabelas que pode ser especificada na cláusula Cláusula FROM do comando SELECT.
condição
Uma expressão que retorna um valor do tipo boolean. Somente são atualizadas as
linhas para as quais esta expressão retorna true.
5
Atualização de dados
Exemplos
Mudar a palavra Drama para Dramático na coluna tipo da tabela filmes: UPDATE
filmes SET tipo = 'Dramático' WHERE tipo = 'Drama';
Ajustar as entradas de temperatura e redefinir a precipitação com seu valor padrão
em uma linha da tabela clima:
UPDATE clima SET temp_min = temp_min+1, temp_max = temp_min+15,
precipitacao = DEFAULT WHERE cidade = 'São Francisco' AND data =
'2003-07-03';
Incrementar o contador de vendas do vendedor que gerencia a conta da Corporação
Acme, usando a sintaxe da cláusula FROM:
UPDATE empregados SET contador_de_vendas = contador_de_vendas +
1 FROM contas WHERE contas.nome = 'ACME' AND empregados.id =
contas.vendedor;
Realizar a mesma operação utilizando uma subseleção na cláusula WHERE: UPDATE
empregados SET contador_de_vendas = contador_de_vendas + 1 WHERE
id =
(SELECT vendedor FROM contas WHERE nome = 'Corporação Acme');
6
Atualização em transações
O comando UPDATE pode ser utilizado em transações SQL para
garantir a integridade das informações. Exemplo:
Tentar inserir um novo item no estoque junto com a quantidade em estoque. Se o
item já existir, em vez inserir, atualizar o contador de estoque do item existente.
Para fazer isto, sem interromper toda a transação, é utilizado um ponto de
salvamento.
BEGIN;
-- outras operações
SAVEPOINT sp1;
INSERT INTO vinhos VALUES('Chateau Lafite 2003', '24');
-- Assumindo que o comando acima falhou devido à violação de chave única,
-- serão submetidos os comandos abaixo:
ROLLBACK TO sp1;
UPDATE vinhos SET estoque = estoque + 24 WHERE nome_do_vinho =
'Chateau Lafite 2003';
-- prosseguir com as outras operações e, finalmente,
COMMIT;
7
Exclusão de dados
Até aqui foi mostrado como adicionar dados a tabelas, e como
modificar estes dados. Está faltando mostrar como remover os
dados que não são mais necessários.
Assim como só é possível adicionar dados para toda uma linha,
uma linha também só pode ser removida por inteiro da tabela.
O SQL não fornece uma maneira para endereçar diretamente
uma determinada linha. Portanto, a remoção das linhas só pode ser
feita especificando as condições que as linhas a serem removidas
devem atender.
8
Exclusão de dados
Para se excluir um registro é utilizado o comando DELETE.
A sintaxe deste comando é muito semelhante a do comando
UPDATE. Por exemplo, para remover todas as linhas da tabela
produtos possuindo preço igual a 10:
DELETE FROM produtos WHERE preco = 10;
Se uma qualificação não for fornecida, o comando DELETE
remove todas as linhas da tabela, deixando-a vazia.
ATENÇÃO: O sistema não solicita confirmação antes de realizar esta operação!:
DELETE FROM produtos;
9
Exclusão de dados
DELETE: exclui linhas de uma tabela.
Sinopse
DELETE FROM [ ONLY ] tabela [ WHERE condição ]
Descrição
O comando DELETE exclui da tabela especificada as linhas que
satisfazem a cláusula WHERE. Se a cláusula WHERE estiver ausente, o
efeito será excluir todas as linhas da tabela. O resultado será uma tabela
válida, porém vazia.
Por padrão, o comando DELETE exclui linhas da tabela especificada e de
todas as suas tabelas descendentes. Se for desejado excluir linhas apenas
da tabela especificada, deve ser utilizada a cláusula ONLY.
É necessário possuir o privilégio DELETE na tabela para excluir linhas da
mesma, assim como o privilégio SELECT para todas as tabelas cujos
valores são lidos pela condição.
10
Exclusão de dados
Parâmetros
tabela
O nome (opcionalmente qualificado pelo esquema) de uma tabela
existente.
condição
Uma expressão retornando um valor do tipo boolean, que determina
as linhas a serem excluídas.
11
Exclusão de dados
Exemplos
Excluir todos os filmes, exceto os musicais:
DELETE FROM filmes WHERE tipo <> 'Musical';
Limpar a tabela filmes:
DELETE FROM filmes;
12
Exclusão de dados
Observações
O PostgreSQL permite que se faça referência a colunas de outras
tabelas na condição WHERE. Por exemplo, para excluir todos os filmes
produzidos por um determinado produtor pode ser utilizado:
DELETE FROM filmes
WHERE filmes.id_produtor = produtores.id_produtor AND
produtores.nome = 'foo';
Esta sintaxe não é padrão. Uma forma mais padrão de se fazer isto é:
DELETE FROM filmes WHERE id_produtor IN
(SELECT id_produtor FROM produtores WHERE nome =
'foo');
Dica: O comando TRUNCATE é uma extensão do PostgreSQL que fornece um
13
mecanismo mais rápido para excluir todas as linhas da tabela.
Exclusão de dados (TRUNCATE)
TRUNCATE: esvazia a tabela.
Sinopse
TRUNCATE [ TABLE ] nome [CASCADE]
Descrição
O comando TRUNCATE remove rapidamente todas as linhas da tabela.
Possui o mesmo efeito do comando DELETE não qualificado (sem
WHERE), mas como na verdade não varre a tabela é mais rápido. É mais
útil em tabelas grandes.
Parâmetros
nome
O nome (opcionalmente qualificado pelo esquema) da tabela a ser
truncada.
14
Exclusão de dados (TRUNCATE)
Observações
O comando TRUNCATE não pode ser usado quando existe referência
de chave estrangeira de outra tabela para a tabela. Neste caso podese utilizar a opção CASCADE, porém tendo a consciência de que a
integridade referencial dos dados será comprometida.
Exemplos
Truncar a tabela tbl_grande:
TRUNCATE TABLE tbl_grande;
Obs: Não existe o comando TRUNCATE no padrão SQL.
15
Download