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 name
NULL
agora. A declaração REPLACE
funciona da seguinte forma:
- First,
REPLACE
a declaração tentou inserir uma nova linha emcities
a tabela. A inserção falhou porque o id 2 já existe na declaraçãocities
tabela. - Então,
REPLACE
a 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.