sql >> Base de Datos >  >> RDS >> SQLite

Cómo actualizar datos existentes con SQLite


Introducción

Una vez que un dato ingresa a una base de datos, es muy poco probable que permanezca estático durante el tiempo que pasa en una tabla. Los datos se actualizan para reflejar los cambios en los sistemas que representan para seguir siendo relevantes y actualizados. SQLite le permite cambiar los valores en los registros usando UPDATE Comando SQL.

UPDATE funciones similares a INSERT (en el que especifica columnas y sus valores deseados) y DELETE (en el sentido de que proporciona los criterios necesarios para apuntar a registros específicos). También puede modificar los datos uno por uno o en masa. En este artículo, profundizaremos en cómo usar UPDATE de manera efectiva para administrar sus datos que ya están almacenados en tablas.



Usando UPDATE para modificar datos

La sintaxis básica de UPDATE el comando se parece a esto:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1;

La estructura básica involucra tres cláusulas separadas:

  • especificar una tabla sobre la que actuar
  • proporcionando las columnas que desea actualizar, así como sus nuevos valores
  • definir cualquier criterio que SQLite necesite evaluar para determinar qué registros coincidir

Si bien puede asignar valores directamente a las columnas como hicimos anteriormente, también puede usar la sintaxis de la lista de columnas, como se ve a menudo en INSERT comandos.

Por ejemplo, podemos modificar el ejemplo anterior para que se vea de la siguiente manera:

UPDATE my_tableSET (column1, column2) =        (value1, value2)WHERE        id = 1;


Devolver registros modificados por UPDATE comando

De forma predeterminada, SQLite no muestra el número de filas afectadas por una UPDATE declaración. Sin embargo, SQLite agregó el RETURNING cláusula modelada según PostgreSQL en la versión 3.35.0 . Esta cláusula hace que los comandos devuelvan todos o parte de los registros que fueron modificados.

Puedes usar el asterisco * símbolo para devolver todas las columnas de las filas modificadas como un SELECT declaración:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1RETURNING *;

Además, también puede especificar las columnas exactas que desea mostrar con/sin un alias usando AS :

UPDATE my_tableSET        column1 = value1,        column2 = value2WHERE        id = 1RETURNING column1 AS 'first column';


Actualización de registros basados ​​en valores en otra tabla

La actualización de datos en función de nuevos datos externos es un proceso relativamente simplificado. Solo necesita proporcionar la tabla, las columnas, los nuevos valores y los criterios de orientación.

Sin embargo, con SQLite también puedes usar UPDATE para actualizar condicionalmente los valores de la tabla en función de la información de otra tabla dentro de su base de datos. La sintaxis básica se verá así:

UPDATE table1SET table1.column1 =(    SELECT table2.column1    FROM table2    WHERE table1.column2 = table2.column2);

Aquí, estamos actualizando directamente el valor de column1 en table1 ser el retorno de un SELECT subconsulta en table2 , pero solo en filas donde column2 de table1 coincide con column2 de table2 . El FROM cláusula indica una conexión entre las dos tablas y WHERE especifica las condiciones.

Como ejemplo, supongamos que tenemos dos tablas llamadas book y 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');

Estas dos tablas tienen una relación con book.author_id haciendo referencia a author.id . Actualmente la last_publication para el author la tabla es NULL . Podemos llenarlo con el último libro publicado del autor en nuestro book tabla usando FROM y WHERE cláusulas para unir las dos tablas.

Aquí, mostramos un ejemplo de actualización de last_publication :

UPDATE author SET last_publication=(  SELECT title   FROM book   WHERE author_id = author.id  ORDER BY author_id, publication_year DESC);

Si consulta al author tabla ahora, le mostrará el título de su publicación más reciente en la base de datos:

SELECT * FROM author;
+------------+------------+-----------+--------------------------+      id       first_name  last_name      last_publication     +-------------+------------+-----------+--------------------------+       1       Leo          Tolstoy        Anna Karenina              2       James         Joyce             Ulysses                3       Jean-Paul     Sarte             Nausea          +-------------+------------+-----------+--------------------------+


Conclusión

En esta guía, echamos un vistazo a las formas básicas en que puede modificar los datos existentes dentro de una tabla usando el UPDATE dominio. La ejecución de estos conceptos básicos le permite especificar los criterios exactos necesarios para identificar las filas existentes dentro de una tabla, actualizar los nombres de las columnas con valores y, opcionalmente, devolver las filas que se vieron afectadas con RETURNING . La UPDATE El comando es fundamental para administrar sus datos después de la inserción inicial en sus bases de datos.