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.