Voltar para a lista de artigos Artigos
7 minutos de leitura

Como atualizar apenas as 10 primeiras linhas em SQL

Os bancos de dados do mundo real requerem atualização contínua. Muitas vezes, você precisa atualizar registros específicos; você pode até querer atualizar apenas a primeira linha, ou as primeiras 10, 100, ou 1000 linhas. Vamos explorar como atualizar linhas para uma quantidade específica a partir do topo em SQL.

O que é a atualização SQL?

Em SQL, uma instrução UPDATE modifica os registros existentes de uma tabela. Você pode optar por atualizar colunas inteiras ou atualizar linhas filtradas com uma instrução WHERE. Como veremos neste artigo, você também pode atualizar as linhas para uma quantidade específica a partir do topo de sua tabela.

Manter as bases de dados atualizadas é uma das principais responsabilidades dos engenheiros de dados, administradores de dados e de todos que trabalham com bases de dados. Confira este guia detalhado para explicações e exemplos de atualização de SQL para iniciantes.

Para aprender todos os conceitos básicos de modificação de bancos de dados, confira nosso curso interativo Usando Comandos INSERT, UPDATE e DELETE em SQL. Com 52 exercícios SQL interativos, você aprende como recuperar, armazenar, modificar, apagar, inserir e atualizar dados com a linguagem de manipulação de dados SQL (DML). Se você é muito novo em SQL, eu recomendo tomar a SQL para Iniciantes curso interativo antes de passar à linguagem de manipulação de dados.

Como atualizar apenas uma linha em SQL

A melhor maneira de entender como funciona o SQL UPDATE é vê-lo em ação. Então, vamos começar com um exemplo.

Temos uma tabela de nossos fornecedores, com a identificação da empresa, nome da empresa, nome da pessoa de contato e volume de produtos e serviços fornecidos em 2021 (em 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 manter as coisas simples e começar com a atualização de apenas uma linha da tabela. Especificamente, digamos que acabamos de saber que a pessoa de contato do "Lots of Fun" mudou de Phyllis Vance para Pam Beesly. Queremos atualizar o nome do contato para a empresa com o ID 9. Aqui está uma consulta que podemos usar:

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

A sintaxe é simples. Após a palavra-chave UPDATE, especificamos o nome da tabela que desejamos atualizar. Depois, com a palavra-chave SET, definimos qual coluna (ou seja, contact_name) deve ser atualizada com qual valor (ou seja, Pam Beesley). Finalmente, usamos a palavra-chave WHERE para especificar que somente o registro com o ID 9 da empresa deve ser atualizado.

Aqui está a tabela atualizada. Como você vê, agora temos uma nova pessoa de contato 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

Agora, passemos a um caso mais complexo no qual atualizamos várias fileiras.

Como Atualizar um Número Específico de Linhas

Há muitos cenários diferentes nos quais você precisa atualizar várias linhas. Na maioria das vezes, você seleciona as linhas que deseja atualizar usando as condições de filtragem em uma declaração WHERE.

Aqui, porém, focalizamos o caso em que você deseja atualizar as linhas para uma quantidade especificada do topo, por exemplo, os primeiros 10 registros.

Continuamos com nosso primeiro exemplo, mas com algumas atualizações. Digamos que queremos acrescentar outra coluna, top_supplier, ao nosso suppliers mesa. Nesta coluna, queremos ver:

  • "Sim" se o fornecedor for um dos 10 primeiros pelo valor que pagamos à empresa no ano passado, ou
  • "Não" para todos os outros fornecedores.

Sugiro fazer isto em três etapas:

  1. Acrescentar uma nova coluna top_supplier.
  2. Defina o valor desta coluna para "Não" para todos os registros.
  3. Atualizar o valor desta coluna para "Sim" para os 10 principais fornecedores.

Eis como podemos realizar os dois primeiros passos:

ALTER TABLE suppliers
ADD top_supplier varchar(32);

UPDATE suppliers
SET top_supplier = 'No';

E aqui está a tabela 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

Agora vem a parte mais interessante: atualizar a coluna top_supplier para as primeiras 10 linhas depois de encomendarmos a tabela pela coluna volume_2021. A sintaxe da consulta para realizar este terceiro passo depende do sistema de gerenciamento do banco de dados (por exemplo, MySQL, SQL Server, Oracle, ou PostgreSQL). Por enquanto, vou mostrar as consultas de trabalho para alguns dos sistemas de gerenciamento de banco de dados mais populares.

MySQL

No MySQL, podemos aproveitar a palavra-chave LIMIT que limita o número de registros a sair ou a atualizar:

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

Com esta consulta, atualizamos a suppliers definindo o valor da coluna top_supplier como "Sim". Entretanto, queremos estas atualizações apenas para os 10 principais fornecedores. Assim, pedimos a tabela com base na coluna volume_2021 (em ordem decrescente), e depois limitamos o número de linhas a serem atualizadas a 10. Se você precisar atualizar seus conhecimentos sobre ORDER BY, confira este artigo detalhado.

Aqui está a tabela atualizada ordenada por volume_2021. Como você vê, apenas os 10 principais fornecedores têm "Sim" na última coluna. Use a mesma sintaxe para atualizar apenas a primeira linha, ou as primeiras 5, 20, 100, ou qualquer número de linhas simplesmente mudando o número após a palavra-chave 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

Ao contrário do MySQL, o SQL Server não tem a palavra-chave LIMIT. Ao invés disso, ele tem TOP. Use esta palavra-chave em uma subconsulta para obter as IDs dos 10 maiores fornecedores:

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

Em seguida, atualizamos a coluna top_supplier para os registros cujas IDs correspondentes são encontradas na lista criada pela subconsulta.

PostgreSQL e Oracle

Finalmente, PostgreSQL e Oracle fornecem uma maneira diferente de limitar o número de linhas a serem atualizadas. Semelhante à consulta anterior, usamos uma subconsulta. Com esta subconsulta, encomendamos a suppliers tabela pelo valor pago e depois limitar a saída a 10 registros, usando as palavras-chave 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 você vê, atualizamos apenas os registros correspondentes na consulta principal.

Obtenha mais exemplos de subconsultas para a declaração UPDATE neste artigo detalhado. Veja também mais exemplos com INSERT, UPDATE, e DELETE aqui.

Hora de Praticar com Cursos SQL Online!

SQL é uma poderosa ferramenta analítica que normalmente supera o Excel em eficácia e eficiência. É também uma das modernas linguagens de programação que estão aqui para ficar. SQL não é difícil de aprender, mas muitas vezes existem várias maneiras diferentes de se realizar a mesma tarefa. Além disso, existem certas diferenças de sintaxe entre os sistemas de gerenciamento de banco de dados.

A abordagem mais eficaz para obter uma compreensão abrangente de SQL é fazer cursos online de SQL. Se você não tem experiência com SQL, eu recomendo começar com o SQL para Iniciantes curso. Inclui 129 exercícios SQL interativos para cobrir todas as bases necessárias para a recuperação de dados de um banco de dados.

Se você também quiser saber como modificar seu banco de dados, verifique o curso Usando Comandos INSERT, UPDATE e DELETE em SQL. Este curso interativo cobre os fundamentos da linguagem de manipulação de dados para ajudá-lo a ampliar e atualizar seu banco de dados conforme a necessidade.

Quando você estiver pronto para ir além dos cursos individuais e obter um conhecimento abrangente das capacidades SQL, vá para nossas pistas de aprendizagem:

  • SQL de A a Z para ficar confortável com conceitos SQL básicos e avançados, tais como funções de janela, consultas recursivas, e GROUP BY
  • Criar estrutura de banco de dados para aprender como criar e gerenciar tabelas, visualizações e índices em sistemas de gerenciamento de bancos de dados relacionais populares como MySQL, SQL Server, Oracle e PostgreSQL.

Obrigado pela leitura, e feliz aprendizado!