Introdução
Uma vez que um dado entra em um banco de dados, é muito improvável que ele permaneça estático durante todo o tempo gasto em uma tabela. Os dados são atualizados para refletir as mudanças nos sistemas que eles representam para permanecerem relevantes e atualizados. SQLite permite alterar os valores nos registros usando o
UPDATE
Comando SQL. UPDATE
funções semelhantes a INSERT
(no qual você especifica colunas e seus valores desejados) e DELETE
(na medida em que você fornece os critérios necessários para direcionar registros específicos). Você também pode modificar os dados um por um ou em massa. Neste artigo, veremos como usar UPDATE
efetivamente para gerenciar seus dados que já estão armazenados em tabelas. Usando UPDATE
para modificar dados
A sintaxe básica do
UPDATE
comando se parece com isso:UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
A estrutura básica envolve três cláusulas separadas:
- especificar uma tabela para agir
- fornecendo as colunas que você deseja atualizar, bem como seus novos valores
- definindo quaisquer critérios que o SQLite precisa avaliar para determinar quais registros devem corresponder
Embora você possa atribuir valores diretamente às colunas como fizemos acima, você também pode usar a sintaxe da lista de colunas, como é frequentemente visto em
INSERT
comandos. Por exemplo, podemos alterar o exemplo acima para ficar assim:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Retornando registros modificados pelo UPDATE
comando
Por padrão, o SQLite não mostra o número de linhas impactadas por um
UPDATE
demonstração. No entanto, o SQLite adicionou o RETURNING
cláusula modelada após o PostgreSQL na versão 3.35.0
. Esta cláusula faz com que os comandos retornem todos ou parte dos registros que foram modificados. Você pode usar o asterisco
*
símbolo para retornar todas as colunas das linhas modificadas como um SELECT
demonstração:UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Além disso, você também pode especificar as colunas exatas que deseja exibir com/sem um alias usando
AS
:UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Atualizando registros com base em valores em outra tabela
A atualização de dados com base em novos dados externos é um processo relativamente simplificado. Você só precisa fornecer a tabela, colunas, novos valores e os critérios de segmentação.
No entanto, com o SQLite você também pode usar
UPDATE
para atualizar condicionalmente os valores da tabela com base nas informações de outra tabela em seu banco de dados. A sintaxe básica será algo assim:UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Aqui, estamos atualizando diretamente o valor de
column1
em table1
para ser o retorno de um SELECT
subconsulta em table2
, mas apenas em linhas onde column2
de table1
corresponde a column2
de table2
. O FROM
cláusula indica uma conexão entre as duas tabelas e WHERE
especifica as condições. Como exemplo, vamos supor que temos duas tabelas chamadas
book
e author
. CREATE TABLE author ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, last_publication TEXT);CREATE TABLE book ( id INTEGER PRIMARY KEY, author_id INT REFERENCES author.id title TEXT, publication_year INTEGER);INSERT INTO author (first_name, last_name)VALUES ('Leo', 'Tolstoy'), ('James', 'Joyce'), ('Jean-Paul', 'Sarte'); INSERT INTO book (author_id, title, publication_year)VALUES (1, 'Anna Karenina', '1877'), (1, 'War and Peace', '1867'), (2, 'Ulysses', '1920'), (2, 'Dubliners', '1914'), (3, 'Nausea', '1938');
Essas duas tabelas têm uma relação com
book.author_id
referenciando author.id
. Atualmente a last_publication
para o author
tabela é NULL
. Podemos preenchê-lo com o último livro publicado do autor em nosso book
tabela usando FROM
e WHERE
cláusulas para unir as duas tabelas. Aqui, mostramos um exemplo atualizando
last_publication
:UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Se você consultar o
author
tabela agora, ele mostrará o título de sua publicação mais recente no banco de dados:SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Conclusão
Neste guia, examinamos as maneiras básicas de modificar dados existentes em uma tabela usando o
UPDATE
comando. A execução desses conceitos básicos permite especificar os critérios exatos necessários para identificar as linhas existentes em uma tabela, atualizar os nomes das colunas com valores e, opcionalmente, retornar as linhas que foram impactadas com RETURNING
. A UPDATE
O comando é crítico para gerenciar seus dados após a inserção inicial em seus bancos de dados.