Volver a la lista de artículos Artículos
Lectura de 8 minutos

Cómo actualizar sólo las 10 primeras filas en SQL

Las bases de datos del mundo real requieren una actualización continua. A menudo, usted necesita actualizar registros específicos; incluso puede querer actualizar sólo la primera fila, o las primeras 10, 100 o 1000 filas. Exploremos cómo actualizar filas de una cantidad específica desde el principio en SQL.

¿Qué es el UPDATE en SQL?

En SQL, una sentencia UPDATE modifica los registros existentes de una tabla. Puede elegir actualizar columnas enteras o actualizar filas filtradas con una sentencia WHERE. Como veremos en este artículo, también puede actualizar filas para una cantidad específica de la parte superior de la tabla.

Mantener las bases de datos actualizadas es una de las principales responsabilidades de los ingenieros de datos, los administradores de datos y todos los que trabajan con bases de datos. Consulta esta guía detallada para obtener explicaciones y ejemplos fáciles de usar para principiantes sobre SQL UPDATE.

Para aprender todos los fundamentos de la modificación de bases de datos, consulte nuestro curso interactivo Cómo añadir, modificar y eliminar datos con SQL. Con 52 ejercicios interactivos de SQL, aprenderá a recuperar, almacenar, modificar, eliminar, insertar y actualizar datos con el lenguaje de manipulación de datos (DML) de SQL. Si eres muy nuevo en SQL, te recomiendo que tomes el SQL para principiantes curso interactivo antes de pasar al lenguaje de manipulación de datos.

Cómo actualizar una sola fila en SQL

La mejor manera de entender cómo funciona el UPDATE de SQL es verlo en acción. Así que, empecemos con un ejemplo.

Tenemos una tabla de nuestros proveedores, con el ID de la empresa, el nombre de la empresa, el nombre de la persona de contacto, y el volumen de productos y servicios suministrados en 2021 (en USD).

suppliers
idcompany_namecontact_namevolume_2021
1Dunder MifflinMichael Scott456388.40
2Eco FocusRobert California203459.30
3Max EnergyRoy Anderson1403958.80
4Apples and OrangesTodd Packer2303479.50
5Top SecurityJo Bennett105000.10
6InnovatorsAndy Bernard567980.00
7Big Data CorpOscar Martinez345678.90
8Miami and partnersStanley Hudson1205978.80
9Lots of FunPhyllis Vance490345.40
10Repair IncDarryl Philbin53673.30
11Best AccountantsKevin Malone534512.20
12Time & MoneyMeredith Palmer78905.20
13Two BossesJim Halpert250350.10
14Epic AdventureRyan Howard87078.00
15Schrute MarketingDwight Schrute3450250.50

Vamos a simplificar y empezar con la actualización de una sola fila de la tabla. En concreto, digamos que acabamos de saber que la persona de contacto de "Lots of Fun" ha cambiado de Phyllis Vance a Pam Beesly. Queremos actualizar el nombre del contacto de la empresa con el ID 9. Aquí tenemos una consulta que podemos utilizar:

UPDATE suppliers
SET contact_name = 'Pam Beesly'
WHERE id = 9;

La sintaxis es sencilla. Después de la palabra clave UPDATE, especificamos el nombre de la tabla que queremos actualizar. A continuación, con la palabra clave SET, definimos qué columna (es decir, contact_name) debe actualizarse con qué valor (es decir, Pam Beesley). Por último, utilizamos la palabra clave WHERE para especificar que sólo se debe actualizar el registro con el ID de empresa 9.

Esta es la tabla actualizada. Como ve, ahora tenemos una nueva persona de contacto para "Lots of Fun":

idcompany_namecontact_namevolume_2021
1Dunder MifflinMichael Scott456388.40
2Eco FocusRobert California203459.30
3Max EnergyRoy Anderson1403958.80
4Apples and OrangesTodd Packer2303479.50
5Top SecurityJo Bennett105000.10
6InnovatorsAndy Bernard567980.00
7Big Data CorpOscar Martinez345678.90
8Miami and partnersStanley Hudson1205978.80
9Lots of FunPam Beesley490345.40
10Repair IncDarryl Philbin53673.30
11Best AccountantsKevin Malone534512.20
12Time & MoneyMeredith Palmer78905.20
13Two BossesJim Halpert250350.10
14Epic AdventureRyan Howard87078.00
15Schrute MarketingDwight Schrute3450250.50

Ahora, pasemos a un caso más complejo en el que actualizamos varias filas.

Cómo actualizar un número específico de filas

Hay muchos escenarios diferentes en los que se necesita actualizar múltiples filas. La mayoría de las veces, usted selecciona las filas que desea actualizar utilizando condiciones de filtrado en una sentencia WHERE.

Aquí, sin embargo, nos centramos en el caso en el que desea actualizar las filas de una cantidad específica desde el principio, por ejemplo, los 10 primeros registros.

Continuamos con nuestro primer ejemplo pero con algunas actualizaciones. Digamos que queremos añadir otra columna, top_supplier, a nuestra suppliers tabla. En esta columna, queremos ver:

  • "Sí" si el proveedor es uno de los 10 primeros por el importe que pagamos a la empresa el año pasado, o
  • "No" para todos los demás proveedores.

Sugiero hacer esto en tres pasos:

  1. Añadir una nueva columna top_supplier.
  2. Establezca el valor de esta columna en "No" para todos los registros.
  3. Actualizar el valor de esta columna a "Sí" para los 10 principales proveedores.

Así es como podemos realizar los dos primeros pasos:

ALTER TABLE suppliers
ADD top_supplier varchar(32);

UPDATE suppliers
SET top_supplier = 'No';

Y aquí está la tabla resultante:

<
suppliers
idcompany_namecontact_namevolume_2021top_supplier
1Dunder MifflinMichael Scott456388.40No
2Eco FocusRobert California203459.30No
3Max EnergyRoy Anderson1403958.80No
4Apples and OrangesTodd Packer2303479.50No
5Top SecurityJo Bennett105000.10No
6InnovatorsAndy Bernard567980.00No
7Big Data CorpOscar Martinez345678.90No
8Miami and partnersStanley Hudson1205978.80No
9Lots of FunPhyllis Vance490345.40No
10Repair IncDarryl Philbin53673.30No
11Best AccountantsKevin Malone534512.20No
12Time & MoneyMeredith Palmer78905.20No
13Two BossesJim Halpert250350.10No
14Epic AdventureRyan Howard87078.00No
15Schrute MarketingDwight Schrute3450250.50No

Ahora viene la parte más interesante: actualizar la columna top_supplier para las 10 primeras filas después de ordenar la tabla por la columna volume_2021. La sintaxis de la consulta para realizar este tercer paso depende del sistema de gestión de la base de datos (por ejemplo, MySQL, SQL Server, Oracle o PostgreSQL). Por ahora, te mostraré consultas que funcionan para algunos de los sistemas de gestión de bases de datos más populares.

MySQL

En MySQL, podemos aprovechar la palabra clave LIMIT, que limita el número de registros que se van a imprimir o actualizar:

UPDATE suppliers
SET top_supplier = 'Yes'
ORDER BY volume_2021 DESC
LIMIT 10;

Con esta consulta, actualizamos la tabla suppliers tabla estableciendo el valor de la columna top_supplier en "Sí". Sin embargo, queremos estas actualizaciones sólo para los 10 principales proveedores. Por lo tanto, ordenamos la tabla en base a la columna volume_2021 (en orden descendente), y luego limitamos el número de filas a actualizar a 10. Si necesita refrescar sus conocimientos sobre ORDER BY, consulte este artículo detallado.

Aquí está la tabla actualizada ordenada por volume_2021. Como ves, sólo los 10 primeros proveedores tienen "Sí" en la última columna. Utilice la misma sintaxis para actualizar sólo la primera fila, o las primeras 5, 20, 100, o cualquier número de filas simplemente cambiando el número después de la palabra clave LIMIT.

idcompany_namecontact_namevolume_2021top_supplier
15Schrute MarketingDwight Schrute3450250.50Yes
4Apples and OrangesTodd Packer2303479.50Yes
3Max EnergyRoy Anderson1403958.80Yes
8Miami and partnersStanley Hudson1205978.80Yes
6InnovatorsAndy Bernard567980.00Yes
11Best AccountantsKevin Malone534512.20Yes
9Lots of FunPhyllis Vance490345.40Yes
1Dunder MifflinMichael Scott456388.40Yes
7Big Data CorpOscar Martinez345678.90Yes
13Two BossesJim Halpert250350.10Yes
2Eco FocusRobert California203459.30No
5Top SecurityJo Bennett105000.10No
14Epic AdventureRyan Howard87078.00No
12Time & MoneyMeredith Palmer78905.20No
10Repair IncDarryl Philbin53673.30No

Servidor SQL

A diferencia de MySQL, SQL Server no tiene la palabra clave LIMIT. En su lugar, tiene TOP. Utilice esta palabra clave en una subconsulta para obtener los ID de los 10 principales proveedores:

UPDATE suppliers
SET top_supplier = 'Yes'
WHERE id IN(
        SELECT TOP (10) id
        FROM suppliers
        ORDER BY volume_2021 DESC);

Luego, actualizamos la columna top_supplier para los registros cuyos IDs correspondientes se encuentran en la lista creada por la subconsulta.

PostgreSQL y Oracle

Por último, PostgreSQL y Oracle proporcionan una forma diferente de limitar el número de filas a actualizar. De forma similar a la consulta anterior, utilizamos una subconsulta. Con esta subconsulta, ordenamos la tabla suppliers tabla por el importe pagado y luego limitamos la salida a 10 registros utilizando las palabras clave FETCH FIRST 10 ROWS ONLY:

UPDATE suppliers
SET top_supplier = 'Yes'
WHERE id IN(
        SELECT id
        FROM suppliers
        ORDER BY volume_2021 DESC
        FETCH FIRST 10 ROWS ONLY);

Como puede ver, sólo actualizamos los registros correspondientes en la consulta principal.

Obtenga más ejemplos de subconsultas para la sentencia UPDATE en este artículo detallado. También, vea más ejemplos con INSERT, UPDATE, y DELETE aquí.

Es hora de practicar con los cursos de SQL en línea

SQL es una poderosa herramienta analítica que suele superar a Excel en eficacia y eficiencia. También es uno de los lenguajes de programación modernos que han llegado para quedarse. SQL no es difícil de aprender, pero a menudo hay varias formas diferentes de realizar la misma tarea. Además, hay ciertas diferencias de sintaxis entre los sistemas de gestión de bases de datos.

El enfoque más eficaz para obtener una comprensión completa de SQL es tomar cursos en línea de SQL. Si no tienes experiencia con SQL, te recomiendo que empieces con el SQL para principiantes curso. Incluye 129 ejercicios interactivos de SQL para cubrir todos los aspectos básicos que necesitas para recuperar datos de una base de datos.

Si también quieres saber cómo modificar la base de datos, consulta el curso Cómo añadir, modificar y eliminar datos con SQL. Este curso interactivo cubre los fundamentos del lenguaje de manipulación de datos para ayudarte a ampliar y actualizar tu base de datos según sea necesario.

Cuando esté listo para ir más allá de los cursos individuales y obtener un conocimiento completo de las capacidades de SQL, vaya a nuestros temas de aprendizaje:

  • Curso completo de SQL Para sentirse cómodo con los conceptos básicos y avanzados de SQL, como las funciones de ventana, las consultas recursivas y los GROUP BY
  • Creación de estructuras de bases de datos para aprender a crear y gestionar tablas, vistas e índices en sistemas de gestión de bases de datos relacionales populares como MySQL, SQL Server, Oracle y PostgreSQL.

Gracias por leer y ¡feliz aprendizaje!