SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como atualizar dados existentes com SQLite


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.