Resumo : neste tutorial, você aprenderá como usar a REPLACE
instrução MySQL para inserir ou atualizar dados em tabelas de banco de dados.
Introdução à instrução MySQL REPLACE
A instrução MySQL REPLACE
é uma extensão do SQL Standard . A instrução MySQL REPLACE
funciona da seguinte maneira:
Passo 1. Insira uma nova linha na tabela , se ocorrer um erro de chave duplicada.
Etapa 2. Se a inserção falhar devido a um erro de chave duplicada:
- Exclua da tabela a linha conflitante que causa o erro de chave duplicada.
- Insira a nova linha na tabela novamente.
Para determinar se a nova linha que já existe na tabela, o MySQL usa PRIMARY KEY
ou UNIQUE KEY
index. Se a tabela não possuir um desses índices, a REPLACE
instrução funciona como uma INSERT
instrução.
Para usar a REPLACE
instrução, você precisa ter pelo menos privilégios INSERT
e DELETE
para a tabela.
Observe que o MySQL possui a REPLACE
função string que não é a REPLACE
instrução abordada neste tutorial.
Usando MySQL REPLACE para inserir uma nova linha
O seguinte ilustra a sintaxe da REPLACE
instrução:
REPLACE [INTO] table_name(column_list)
VALUES(value_list);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
É semelhante à INSERT
instrução, exceto pela palavra-chave REPLACE
. Vamos dar uma olhada no seguinte exemplo de uso da REPLACE
instrução para ver como ela funciona.
Primeiro, crie uma nova tabela com o seguinte nome cities
:
CREATE TABLE cities (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
population INT NOT NULL
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A seguir, insira algumas linhas na cities
tabela:
INSERT INTO cities(name,population)
VALUES('New York',8008278),
('Los Angeles',3694825),
('San Diego',1223405);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, consulte os dados da cities
tabela para verificar a operação de inserção.
SELECT * FROM cities;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Depois disso, use a REPLACE
declaração para atualizar a população da Los Angeles
cidade para 3696820
.
REPLACE INTO cities(id,population)
VALUES(2,3696820);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, consulte novamente os dados da cities
tabela para verificar a substituição.
SELECT * FROM cities;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O valor da name
coluna é NULL
agora.
A REPLACE
declaração funciona da seguinte forma:
- Primeiro, a
REPLACE
instrução tentou inserir uma nova linha nacities
tabela. A inserção falhou porque o id 2 já existe nacities
tabela. - Em seguida, a
REPLACE
instrução excluiu a linha com id 2 e inseriu uma nova linha com o mesmo id 2 e população3696820
. Como nenhum valor foi especificado para a coluna de nome, ela foi definida comoNULL
.
Usando a instrução MySQL REPLACE para atualizar uma linha
O seguinte ilustra como usar a REPLACE
instrução para atualizar dados:
REPLACE INTO table
SET column1 = value1,
column2 = value2;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Esta declaração é como a UPDATE
declaração, exceto pela REPLACE
palavra-chave. Além disso, não possui WHERE
cláusula.
Este exemplo usa a REPLACE
instrução para atualizar a população da cidade Phoenix
para 1768980
:
REPLACE INTO cities
SET id = 4,
name = 'Phoenix',
population = 1768980;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ao contrário da UPDATE
instrução, se você não especificar o valor da coluna na SET
cláusula, a REPLACE
instrução usará o valor padrão dessa coluna.
SELECT * FROM cities;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Usando MySQL REPLACE para inserir dados de uma instrução SELECT
A seguir ilustra a REPLACE
instrução que insere dados em uma tabela com os dados provenientes de uma consulta.
REPLACE INTO table_1(column_list)
SELECT column_list
FROM table_2
WHERE where_condition;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que esta forma de REPLACE
declaração é semelhante à INSERT INTO SELECT
declaração.
A instrução a seguir usa a REPLACE INTO
instrução para copiar uma linha dentro da mesma tabela:
REPLACE INTO
cities(name,population)
SELECT
name,
population
FROM
cities
WHERE id = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu diferentes formas de REPLACE
instrução MySQL para inserir ou atualizar dados em uma tabela.