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:
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
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:
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.