mysql update statement tutorial update query syntax examples
Este tutorial explica a instrução UPDATE do MySQL junto com a sintaxe de consulta e exemplos. Você também aprenderá diferentes variações do comando da tabela de atualização do MySQL:
Como acontece com qualquer outro banco de dados, sempre temos a necessidade de atualizar, modificar ou alterar os dados existentes nas tabelas. No MySQL, temos a instrução UPDATE que pode ser usada para atualizar ou modificar os dados da tabela.
Usando este comando, podemos atualizar um ou vários campos. Podemos atualizar os valores de uma determinada tabela por vez. Usando a cláusula WHERE, podemos especificar as condições usadas especialmente quando há necessidade de atualizar linhas específicas de uma tabela.
Antes de prosseguir, observe que estamos usando o MySQL versão 8.0. Você pode baixá-lo de aqui.
O que você aprenderá:
- MySQL UPDATE Table Sintaxe
- MySQL UPDATE Table Command
- # 1) Atualização de coluna única do MySQL
- # 2) Atualização de múltiplas colunas do MySQL
- # 3) Atualização do MySQL com função REPLACE
- # 4) ATUALIZAÇÃO DO MySQL usando a instrução SELECT
- # 5) ATUALIZAÇÃO do MySQL em várias linhas
- # 6) ATUALIZAÇÃO DO MySQL usando a palavra-chave INNER JOIN
- # 7) ATUALIZAÇÃO DO MySQL usando a palavra-chave LEFT JOIN
- Perguntas e respostas mais frequentes
- Conclusão
MySQL UPDATE Table Sintaxe
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Explicação da sintaxe:
- A sintaxe inicia com a palavra-chave “UPDATE”, informando ao Servidor MySQL o tipo de atividade a ser realizada. Esta é uma palavra-chave obrigatória e não pode ser omitida.
- Em seguida, vem o nome da tabela na qual a ação de atualização deve ser executada. Isso é obrigatório e não pode ser omitido.
- Terceiro, é novamente uma palavra-chave - SET. Esta palavra-chave informa ao servidor MySQL sobre os valores a serem atualizados para os nomes das colunas. Esta é uma palavra-chave obrigatória e não pode ser omitida.
- Em seguida, serão os nomes das colunas a serem atualizados junto com seus valores correspondentes. Isso também é obrigatório e não pode ser omitido.
- Em seguida, vem a condição WHERE, que restringe ou filtra o número de linhas de destino nas quais a ação UPDATE deve ser aplicada. WHERE também é uma palavra-chave, mas opcional.
A cláusula WHERE é, no entanto, significativa. Se não for mencionado, ou se a condição não for definida corretamente, nem a tabela nem as linhas desnecessárias serão atualizadas.
Modificadores em uma instrução de tabela UPDATE
Listados abaixo estão os modificadores em uma instrução UPDATE.
BAIXA PRIORIDADE: Este modificador informa o MySQL Engine para atrasar a atualização até que não haja nenhuma leitura de conexão da tabela.
IGNORAR: Este modificador informa ao MySQL Engine para continuar com a operação UPDATE mesmo se houver algum erro. Nenhuma ação de atualização é executada nas linhas que causaram erros.
Exemplo de UPDATE do MySQL
A seguir, encontra-se uma tabela de amostra criada em MySQL.
Nome do esquema: pacífico
Nome da tabela: funcionários
Nomes de coluna:
- empNum - contém valores inteiros para o número do funcionário.
- lastName - contém valores varchar para o sobrenome do funcionário.
- firstName - contém valores varchar para o nome do funcionário.
- email - contém valores varchar para o ID de email do funcionário.
- deptNum - retém varchar para o ID do departamento ao qual um funcionário pertence.
- salário - contém os valores decimais do salário de cada funcionário.
Nome do esquema: pacífico
Nome da tabela: departamentos
Nomes de coluna:
- deptNum - Contém varchar para o ID do departamento dentro de uma organização.
- cidade - contém o nome da cidade de onde funcionam os departamentos.
- país - contém o nome do país correspondente à cidade.
- bônus - Contém o valor percentual do bônus.
MySQL UPDATE Table Command
# 1) Atualização de coluna única do MySQL
Agora, vamos descobrir um registro que gostaríamos de atualizar. Primeiro, veremos um cenário em que temos que atualizar uma única coluna usando a palavra-chave UPDATE.
Aqui está um funcionário com o número de funcionário 1008.
A consulta e seus resultados correspondentes são os seguintes:
Vamos atualizar o ID de e-mail deste funcionário de ob@gmail.com para oliver.bailey@gmail.com, usando a palavra-chave UPDATE.
ATUALIZAR: A palavra-chave informa ao mecanismo MySQL que a instrução é sobre como atualizar uma tabela.
DEFINIR: Esta cláusula define o valor do nome da coluna mencionado após esta palavra-chave com um novo valor.
ONDE: Esta cláusula especifica a linha particular que deve ser atualizada.
Após a execução da instrução UPDATE, a saída mostrará as estatísticas relacionadas à execução da instrução.
A seguir estão os detalhes que são mostrados:
- Uma declaração que foi executada.
- Mensagens que mostram o número de linhas que foram atualizadas e se houve algum aviso.
Para verificar a saída da instrução UPDATE, vamos reexecutar a instrução SELECT para ver a mudança no ID do e-mail.
Instantâneo da tabela antes:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
7 | Roma | Itália | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Consulta:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Instantâneo da tabela após:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) Atualização de múltiplas colunas do MySQL
A sintaxe para atualizar mais de uma coluna usando a instrução UPDATE é a mesma que para atualizar uma única coluna. Uma única instrução SET terá vários nomes de coluna junto com seu novo valor que deve ser definido, separados por uma vírgula.
Vamos dar uma olhada na linha que precisamos atualizar. Linha com o número do funcionário como 1003.
Aqui, vamos tentar atualizar o lastName de “Mary” para “Margaret” e depois o ID do email de ml@gmail.com para margaret.langaley@gmail.com.
A seguir está a consulta UPDATE. Observe os nomes das colunas separados por uma vírgula.
A saída da execução acima mostra as mesmas estatísticas do caso anterior.
A seguir está a saída para o mesmo registro após a execução da instrução UPDATE.
Instantâneo da tabela antes:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1003 | Mary | Langley | ml@gmail.com | dois |
Consulta:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Instantâneo da tabela após:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) Atualização do MySQL com função REPLACE
Vamos ver mais sobre como usar a função REPLACE para ATUALIZAR uma linha na tabela. Aqui está nosso registro de destino que desejamos atualizar.
O registro abaixo é para o funcionário número 1010. Teremos como objetivo atualizar o ID de e-mail de ja@gmail.com para jacob.armstrong@gmail.com.
Vamos usar a seguinte consulta UPDATE com a função REPLACE que irá atualizar o ID do e-mail.
A seguir estão os parâmetros que são passados na função REPLACE. Todos os 3 parâmetros são de natureza posicional, ou seja, a ordem dos parâmetros não pode ser alterada.
1stParâmetro - contém o nome do ID do email.
doisWLParâmetro - contém o ID de email FROM que deve ser alterado.
3rdParâmetro - contém o ID do email PARA, que é o novo valor.
A seguir está o instantâneo da pós-execução da tabela da instrução UPDATE:
Instantâneo da tabela antes:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Consulta:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Instantâneo da tabela após:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) ATUALIZAÇÃO DO MySQL usando a instrução SELECT
Nesse tipo de UPDATE, o novo valor da coluna a ser atualizada é obtido por uma instrução SELECT em uma subconsulta. Então, vamos dar um exemplo aqui da nossa mesa de 'funcionários'. Aqui está nosso registro de destino que desejamos atualizar.
Nesse caso, atualizaremos o número do departamento, ou seja, a coluna deptNum, usando as tabelas de departamentos. Se olharmos para a tabela de departamentos, o deptNum = 5 corresponde a Berlim. Vamos mover este funcionário para Charlotte em deptNum = 2.
Para realizar esta tarefa, a seguinte instrução UPDATE é usada:
A fim de verificar a saída de nossa instrução UPDATE, vamos executar o SELECIONE demonstração.
Conforme mostrado acima, o valor da coluna deptNum foi atualizado para “2”.
Instantâneo da tabela antes:
empNum | primeiro nome | sobrenome | o email | deptNum |
---|---|---|---|---|
1005 | Pedro | leitura | pl@gmail.com | 5 |
deptNum | Cidade | País |
---|---|---|
1 | Nova york | Estados Unidos |
dois | Charlotte | Estados Unidos |
3 | Chicago | Estados Unidos |
4 | Londres | Inglaterra |
5 | Berlim | Alemanha |
6 | Mumbai | Índia |
Consulta:
Instantâneo da tabela após:
empNum primeiro nome sobrenome o email deptNum 7 Roma Itália NULO 1005 Pedro leitura pl@gmail.com dois
# 5) ATUALIZAÇÃO do MySQL em várias linhas
Às vezes, podemos enfrentar um requisito em que temos que atualizar uma ou mais colunas para várias linhas com valores diferentes.
Por exemplo, queremos dar uma determinada quantia de bônus ao departamento, ou seja, todos os funcionários de um departamento devem receber uma determinada quantia de bônus.
exemplos de cenários de teste ponta a ponta
A sintaxe geral é a seguinte:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
Para explicar isso com um exemplo, vamos adicionar mais uma coluna às tabelas de departamento. Vamos adicionar a coluna “bônus” à tabela de departamento. A ideia é atribuir um percentual de bônus a cada departamento e aumentar o salário dos funcionários naquele percentual correspondente a cada departamento.
Para conseguir isso, executaremos as seguintes instruções ALTER para adicionar uma coluna:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
A seguir seria a estrutura da tabela postar as alterações acima. As novas colunas serão adicionadas com NULO como valor.
A seguir, vamos escrever a consulta UPDATE que irá atualizar a porcentagem de bônus para cada departamento.
Após a execução da instrução acima, o seguinte é o instantâneo com os valores atualizados para a coluna Bonus.
Instantâneo da tabela antes:
deptNum Cidade País Bônus 1 Nova york Estados Unidos NULO dois Charlotte Estados Unidos NULO 3 Chicago Estados Unidos NULO 4 Londres Inglaterra NULO 5 Berlim Alemanha NULO 6 Mumbai Índia NULO
Consulta:
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END;
Instantâneo da tabela após:
deptNum Cidade País Bônus 7 Roma Itália 18 1 Nova york Estados Unidos 3 dois Charlotte Estados Unidos 5 3 Chicago Estados Unidos 8 4 Londres Inglaterra 10 5 Berlim Alemanha 13 6 Mumbai Índia quinze
# 6) ATUALIZAÇÃO DO MySQL usando a palavra-chave INNER JOIN
JUNTE-SE é uma das palavras-chave mais importantes nas instruções SQL. Normalmente, você pode tê-lo usado na instrução SELECT.
Existem basicamente quatro tipos de instruções JOIN:
- JUNÇÃO INTERNA: Busca os registros comuns em ambas as tabelas.
- ASSOCIAÇÃO À ESQUERDA: Busca todos os registros da tabela do lado esquerdo da palavra-chave e os registros correspondentes da tabela do lado direito da palavra-chave.
- JUNTAR À DIREITA: Busca todos os registros da tabela do lado direito da palavra-chave e os registros correspondentes da tabela do lado esquerdo da palavra-chave.
- OUTER JOIN: Busca todos os registros de ambas as tabelas, com os registros incompatíveis correspondentes representados como NULL.
O MySQL oferece uma oportunidade única de usar JOIN mesmo em instruções UPDATE para realizar atualizações entre tabelas. No entanto, é limitado apenas a INNER JOIN e LEFT JOIN.
A sintaxe genérica da instrução UPDATE usando a palavra-chave JOIN é a seguinte:
UPDATE TAB1, TAB2, [INNER JOIN | LEFT JOIN] TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Aqui, a instrução UPDATE espera três itens de dados.
- Nomes de tabelas, TAB1 e TAB2, nas quais a junção está sendo realizada.
- Tipo de JOIN que pretendemos realizar, INNER ou LEFT.
- Em seguida, segue o comando SET com o qual podemos atualizar os valores da coluna em / ou TAB1 e TAB2.
- Por último, uma cláusula WHERE para atualizar apenas as linhas que atendem aos nossos critérios.
Para explicar isso com um exemplo, vamos adicionar mais uma coluna à tabela Funcionários. Adicionaremos a coluna “salário” à tabela Funcionários. A ideia é aumentar o salário dos funcionários por um valor percentual de bônus presente na coluna bônus da tabela de departamentos.
Para conseguir isso, executaremos as seguintes instruções ALTER para adicionar uma coluna:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
Em seguida, preencheremos os dois novos campos que adicionamos. Após preencher os valores, o seguinte é o conteúdo da tabela.
Tabela de funcionários:
empNum primeiro nome sobrenome o email deptNum Salário 1007 Schmitt James js@gmail.com 4 18.000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com dois 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 leitura Pedro pl@gmail.com dois 13000 1006 Keith Jenny jk@gmail.com dois 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21.000 1009 xícara atormentar hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
Agora, vamos usar a palavra-chave JOIN e atualizar o salário de todos os funcionários com um percentual de bônus na tabela dos departamentos. Aqui, deptNum é a chave na qual as duas tabelas serão combinadas.
F a seguir está o instantâneo dos salários dos funcionários a partir de agora:
O instantâneo da tabela de departamentos é o seguinte:
A seguir está a consulta UPDATE que irá atualizar o salário dos funcionários com base na porcentagem de bônus nas tabelas dos departamentos com base na coluna-chave deptNum.
Agora, vamos verificar o salário de cada funcionário após a caminhada.
Se você comparar com o instantâneo anterior, poderá entender facilmente a porcentagem de bônus adicionada ao salário.
Todos os funcionários devem estar torcendo!
Instantâneo da tabela antes:
empNum primeiro nome sobrenome o email deptNum Salário 1007 Schmitt James js@gmail.com 4 18.000 1001 Andrews Jack ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com dois 8000 1004 Harera Sandra sh@gmail.com 1 10.000 1005 leitura Pedro pl@gmail.com dois 13000 1006 Keith Jenny jk@gmail.com dois 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21.000 1009 xícara atormentar hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
deptNum Cidade País Bônus 7 Roma Itália 18 1 Nova york Estados Unidos 3 dois Charlotte Estados Unidos 5 3 Chicago Estados Unidos 8 4 Londres Inglaterra 10 5 Berlim Alemanha 13 6 Mumbai Índia quinze
Consulta:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Instantâneo da tabela após:
empNum primeiro nome sobrenome o email deptNum Salário 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3182,7 1002 Schwatz Mike ms@gmail.com 1 5304,5 1003 Langley Margaret margaret.langley@gmail.com dois 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 leitura Pedro pl@gmail.com dois 14332,5 1006 Keith Jenny jk@gmail.com dois 16537,5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494,4 1009 xícara atormentar hb@gmail.com 5 30645,6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) ATUALIZAÇÃO DO MySQL usando a palavra-chave LEFT JOIN
Conforme explicado na seção anterior, existem dois tipos de JOIN permitidos no MySQL UPDATE. Já vimos o UPDATE usando INNER JOIN.
Vamos começar com UPDATE usando LEFT JOIN.
Exemplo:
Temos um novo contratado que ainda não foi designado para nenhum departamento. Mas temos que dar a todos os novos contratados um bônus de 1%. Agora, como a nova contratação não está atribuída a nenhum departamento, não poderemos obter nenhuma informação de porcentagem de bônus dessa tabela. Nesse caso, ATUALIZARemos o salário das novas contratações usando LEFT JOIN.
Para conseguir isso, vamos adicionar um novo funcionário ao banco de dados de funcionários.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
A seguir está o novo registro que adicionamos:
Tabela de funcionários:
empNum primeiro nome sobrenome o email deptNum Salário 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Jack ja@gmail.com 1 3183 1002 Schwatz Mike ms@gmail.com 1 5305 1003 Langley Margaret margaret.langley@gmail.com dois 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 leitura Pedro pl@gmail.com dois 14333 1006 Keith Jenny jk@gmail.com dois 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494 1009 xícara atormentar hb@gmail.com 5 30646 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NULO 10.000
A seguir, daremos a Tom um bônus de 1% sobre seu salário usando a declaração UPDATE com a cláusula LEFT JOIN:
Abaixo está o salário do TOM pós-caminhada.
Se você comparar com o instantâneo anterior, você pode entender facilmente a% de bônus adicionada ao salário.
Instantâneo da tabela antes:
empNum primeiro nome sobrenome o email deptNum Salário 1011 Tom Hanks th@gmail.com NULO 10.000
Consulta:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Instantâneo da tabela após:
empNum primeiro nome sobrenome o email deptNum Salário 1011 Tom Hanks th@gmail.com NULO 10100
Leitura Recomendada = >> MySQL Joins
Perguntas e respostas mais frequentes
P # 1) Como faço para atualizar os atributos no MySQL?
Responda: Podemos atualizar atributo (s) usando a instrução UPDATE do MySQL, com a instrução começando com a palavra-chave UPDATE seguida pelo nome da tabela. A seguir está a cláusula SET seguida por um nome de coluna e uma cláusula WHERE.
P # 2) Como você atualiza vários registros no MySQL?
Responda: Conforme descrito acima, sob o “Atualizar várias linhas” seção, podemos atualizar várias linhas para uma ou mais colunas com valores iguais ou diferentes usando a instrução CASE.
P # 3) Podemos usar JOIN na consulta de atualização no MySQL?
Responda: Sim, o MySQL permite o uso de JOIN em instruções UPDATE. No entanto, é restrito apenas a INNER e LEFT JOIN.
P # 4) De onde baixar o MySQL?
Responda: Você pode baixar o MySQL versão 8.0 aqui: MySQL .
P # 5) Qual é o significado da cláusula WHERE na instrução Update?
Responda: A cláusula WHERE restringe o número de linhas que devem caber nos critérios da cláusula UPDATE.
Leitura sugerida = >> Como usar o Declaração If do MySQL
Conclusão
Portanto, neste tutorial, aprendemos 7 maneiras diferentes de executar instruções UPDATE do MySQL.
- Atualize uma única coluna
- Atualizar várias colunas
- Atualizar usando REPLACE
- Atualizar usando SELECT
- Atualizar várias linhas
- Atualizar usando INNER JOIN
- Atualizar usando LEFT JOIN
Podemos usar qualquer um deles, com base em nossos requisitos.
Leitura feliz!!
Leitura recomendada
- Diferença entre SQL Vs MySQL Vs SQL Server (com exemplos)
- As 40 melhores perguntas e respostas para entrevistas em MySQL (2.021 perguntas)
- MongoDB Atualizar e Excluir Documento com Exemplos
- Tutorial de instrução de uso de C # e método virtual C # com exemplos
- Tutorial sobre instruções condicionais C #
- Tutorial de reflexão Java com exemplos
- Tutorial Python DateTime com exemplos
- Tutorial do Bugzilla: Tutorial prático da ferramenta de gerenciamento de defeitos