Sumário: neste tutorial, aprenderá como utilizar a declaração MySQL REPLACE para inserir ou actualizar dados em tabelas de base de dados.
Entrar na declaração MySQL REPLACE
O MySQL REPLACE declaração é uma extensão do padrão SQL. A declaração MySQL REPLACE funciona da seguinte forma:
P>Passo 1. Insira uma nova linha na tabela, se ocorrer um erro de chave duplicada.
P>Passo 2. Se a inserção falhar devido a um erro de chave duplicada ocorrer:
- Apagar da tabela a linha conflituosa que causa o erro de chave duplicada.
- Inserir novamente a nova linha na tabela.
Para determinar se a nova linha que já existe na tabela, o MySQL usa PRIMARY KEY ou UNIQUE KEY índice. Se a tabela não tiver um destes índices, o REPLACE funciona como uma declaração INSERT.
Para utilizar a declaração REPLACE, é necessário ter pelo menos ambos INSERT e DELETE privilégios para a tabela.
Notificação de que o MySQL tem a REPLACE função de string que não é a REPLACE declaração abordada neste tutorial.
Usando MySQL REPLACE para inserir uma nova linha
O seguinte ilustra a sintaxe da declaração REPLACE:
Code language: SQL (Structured Query Language) (sql)REPLACE table_name(column_list)VALUES(value_list);
INSERT excepto para a palavra-chave REPLACE.Vejamos o seguinte exemplo de utilização da declaração REPLACE para ver como funciona.
Primeiro, criar uma nova tabela com o nome cities como se segue:
Code language: SQL (Structured Query Language) (sql)CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
P>Próximo, inserir algumas linhas na tabela cities:
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Então, consultar dados da tabela cities para verificar a operação de inserção.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

Após isso, usar a declaração REPLACE para actualizar a população do Los Angeles cidade para 3696820.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Finalmente, consultar os dados da tabela cities novamente para verificar a substituição.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

O valor na coluna nameNULL agora. A declaração REPLACE funciona da seguinte forma:
- First,
REPLACEa declaração tentou inserir uma nova linha emcitiesa tabela. A inserção falhou porque o id 2 já existe na declaraçãocitiestabela. - Então,
REPLACEa declaração eliminou a linha com id 2 e inseriu uma nova linha com o mesmo id 2 e população3696820. Como não é especificado qualquer valor para a coluna do nome, foi definido paraNULL.
Usando a declaração MySQL REPLACE para actualizar uma linha
O seguinte ilustra como usar a declaração REPLACE para actualizar dados:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
Esta declaração é como a declaração UPDATE excepto para a declaração REPLACE palavra-chave. Além disso, não tem WHERE cláusula.
Este exemplo utiliza a cláusula REPLACE para actualizar a população do Phoenix cidade para 1768980:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Não se parece com a declaração UPDATE, se não especificar o valor da coluna na cláusula SET, a declaração REPLACE utilizará o valor por defeito dessa coluna.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Usando MySQL REPLACE para inserir dados de uma declaração SELECT
O seguinte ilustra a declaração REPLACE que insere dados numa tabela com os dados provenientes de uma consulta.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Nota que esta forma da declaração REPLACE é semelhante a INSERT INTO SELECT declaração.
A seguinte declaração usa a declaração REPLACE INTO declaração para copiar uma linha dentro da mesma tabela:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Neste tutorial, aprendeu diferentes formas do MySQL REPLACE declaração para inserir ou actualizar dados numa tabela.