logo

SUBSTITUIR MySQL

A instrução REPLACE no MySQL é uma extensão do padrão SQL. Esta instrução funciona da mesma forma que a instrução INSERT, exceto que se uma linha antiga corresponder ao novo registro na tabela para um índice PRIMARY KEY ou UNIQUE, este comando excluiu a linha antiga antes que a nova linha fosse adicionada.

Esta instrução é necessária quando queremos atualizar os registros existentes na tabela para mantê-los atualizados. Se usarmos a consulta de inserção padrão para essa finalidade, ocorrerá uma entrada Duplicada para PRIMARY KEY ou um erro de chave UNIQUE. Neste caso, usaremos a instrução REPLACE para realizar nossa tarefa. O comando REPLACE requer um dos dois possível ações acontecem:

  • Se nenhum valor correspondente for encontrado na linha de dados existente, uma instrução INSERT padrão será executada.
  • Se o registro duplicado for encontrado, o comando de substituição excluirá a linha existente e adicionará o novo registro na tabela.

Na instrução REPLACE, a atualização foi realizada em duas etapas. Primeiro, ele excluirá o registro existente e, em seguida, o registro recém-atualizado será adicionado, semelhante a um comando INSERT padrão. Assim, podemos dizer que a instrução REPLACE executa duas funções padrão, EXCLUIR e INSERIR .

Sintaxe

alfabeto em números

A seguir estão a sintaxe de SUBSTITUIR declaração em MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

Exemplo de substituição do MySQL

Vamos entender o funcionamento da instrução REPLACE no MySQL com a ajuda de um exemplo. Primeiro, vamos criar uma tabela chamada 'Pessoa' usando a seguinte declaração:

vikas divyakirti
 CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL ); 

Em seguida, precisamos preencher o registro na tabela usando o INSERIR declaração conforme abaixo:

 INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska'); 

Execute o SELECIONAR declaração para verificar os registros que podem ser mostrados na saída abaixo:

SUBSTITUIR MySQL

Depois de verificar os dados em uma tabela, podemos substituir qualquer linha antiga pela nova linha usando a instrução REPLACE. Execute a instrução abaixo que atualiza o cidade de uma pessoa cujo id é 4 .

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

Após a execução bem-sucedida da instrução acima, é necessário consultar novamente os dados da tabela Pessoa para verificar a substituição.

divisão de string java
SUBSTITUIR MySQL

O valor no nome e e-mail colunas são NULO agora. É porque a instrução REPLACE funciona da seguinte maneira:

  • Esta instrução primeiro tenta inserir uma nova linha na tabela Person. Porém a inserção de uma nova linha falhou porque o id = 4 já existe na tabela.
  • Portanto, esta instrução primeiro exclui a linha cujo id = 4 e depois insere uma nova linha com o mesmo id e cidade de Amsterdã. Como não especificamos o valor da coluna nome e email, ele foi definido como NULL.

Instrução MySQL REPLACE para atualizar uma linha

Podemos usar a seguinte instrução REPLACE para atualizar os dados de uma linha em uma tabela:

 REPLACE INTO table SET column1 = value1, column2 = value2; 

A sintaxe acima é semelhante à Instrução ATUALIZAR exceto para a palavra-chave REPLACE. É importante observar que não podemos usar a cláusula WHERE com esta instrução.

Execute o exemplo abaixo que usa a instrução REPLACE para atualizar a cidade da pessoa chamada Mike de Califórnia para Birmingham .

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

Após a verificação da tabela, podemos ver a seguinte saída:

SUBSTITUIR MySQL

Se não especificamos o valor da coluna no Cláusula SET , este comando funciona como o Instrução ATUALIZAR , o que significa que a instrução REPLACE usará o valor padrão dessa coluna.

MySQL REPLACE para inserir dados da instrução SELECT.

Podemos usar a seguinte instrução REPLACE INTO para inserir dados em uma tabela com os dados retornados de uma consulta.

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

É de notar que a consulta REPLACE acima é semelhante à INSERIR EM SELECIONAR declaração. Execute o exemplo abaixo que usa a instrução REPLACE INTO para copiar uma linha na mesma tabela.

gimp muda de cor
 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

Após a verificação da tabela, obteremos a seguinte saída. Nesta saída, podemos ver que a cópia de uma linha na mesma tabela foi adicionada com sucesso.

SUBSTITUIR MySQL